Ruby是否有正式的规范(如Java语言规范(JLS))?

Ruby是否有正式的规范(如Java语言规范(JLS))?,ruby,standards,specifications,Ruby,Standards,Specifications,Ruby是否有一个明确的规范,类似于Java的Java语言规范。谷歌的ruby语言规范提供了一个结果,但该网站已经关闭,我不确定它是否是最新的 Ruby 1.8已经成为多个行业标准的主题。Ruby的语言规范由信息技术促进机构(a机构)的开放标准促进中心开发,提交给JISC,然后提交给ISO。它于2011年被接受为日本工业标准(JIS X 3017),并于2012年被接受为国际标准() 工具书类 另见 -Ruby ISO标准草案 -Ruby ISO标准草案的wiki格式镜像 -社区驱动

Ruby是否有一个明确的规范,类似于Java的Java语言规范。谷歌的ruby语言规范提供了一个结果,但该网站已经关闭,我不确定它是否是最新的

Ruby 1.8已经成为多个行业标准的主题。Ruby的语言规范由信息技术促进机构(a机构)的开放标准促进中心开发,提交给JISC,然后提交给ISO。它于2011年被接受为日本工业标准(JIS X 3017),并于2012年被接受为国际标准()

工具书类
另见
  • -Ruby ISO标准草案
    • -Ruby ISO标准草案的wiki格式镜像
  • -社区驱动的项目,用于编写完整的可执行规范
红宝石是一种很好的选择。它是由(一个日本政府机构)开发的,提交给,然后再提交给

然而,实际上没有人使用这个规范。所有Ruby实现者(如、等)实际使用的规范是

ISO规范草案与RubySpec之间的三个主要区别是:

  • RubySpec是完整的:它涵盖了整个Ruby语言和整个核心库,从版本1.8.7到1.9.2和1.9.3。ISO规范草案仅涵盖1.8和1.9交叉点的一小部分
  • RubySpec是用Ruby编写的(这是一种每个Ruby爱好者都能阅读的语言),ISO规范草案是用英语编写的,或者更确切地说是用ISO标准语言编写的(这是一种只有地球上少数人能完全理解的语言)
  • RubySpec是可执行的:您可以在Ruby实现上运行它,看看您还缺少什么
  • 关于Ruby行为的另一个重要信息源(双关语)是,它实现了Ruby语言和Ruby核心库的语义。(注意:很多人喜欢,但我不喜欢,原因有两个:第一,YARV使用的是C语言,这是一种并非所有Ruby主义者都知道的语言,而Rubinius使用的是Ruby,这(希望)是每个Ruby主义者都知道的语言;第二,Rubinius代码库的结构更好,设计良好,组织良好,测试良好,文档记录良好。)如果你去

    “官方Ruby API文档”

    然后在“页面”下选择“语法”

    然后你会看到这个页面,以及它与其他相关页面的链接

    Ruby语法很大,分为以下几个部分:

    文字
    数字、字符串、数组、哈希等

    作业 赋值和变量

    控制表达式
    如果,除非,while,直到,for,break,next,重做

    方法
    方法和方法参数语法

    调用方法
    如何调用方法(或向方法发送消息)

    模块和类
    创建模块和类,包括继承

    例外情况
    异常处理语法

    优先级
    ruby运算符的优先级

    改进
    实验细化功能的使用和行为

    杂项

    别名、undf、BEGIN、END

    谢谢,我注意到spec.ruby-doc.org是一个基于rspec的可执行规范。似乎没有任何项目正在为编写规范而进行,因此它在ruby社区的优先级列表中似乎很低。写一本书没有价值吗spec@HN:我对Ruby文化了解不够,无法发表评论。也就是说,我喜欢阅读JLS。@HN:您可以只为输出运行规范,比如“Array#length返回blah,Array#length在blah时引发错误,…”,以获得一个非常枯燥的文本标准。有一个Ruby ISO标准的努力,一个镜子是在注意到,对内置库的工作还没有开始…现在有一个正式的规范。唉,它的成本约为250美元阅读。ruby-std.netlab.jp要求输入用户名和密码。ruby-standard.org使我的Chrome hand me成为一个例外。如果我知道该怎么办,我会编辑,如果可以的话,我会投反对票。回答得好。啊,我希望RubySpec是完整的。。。它的目标是,但是简单地搜索一下
    它“需要检查完整性”
    会让你确信它不是。我甚至不清楚它是否完整。将您对平台的理解建立在该平台的特定实现之上是一个非常糟糕的想法。您最终将编写依赖于实现的代码。当然,我以写技术文档为生,所以我有偏见。@IsaacRabinovitch:不幸的是,在13年多的时间里,只有一个实现。因此,该实现成为规范。是的,现在有一个ISO规范,但它只涵盖语言的一小部分,核心库的一小部分,而标准库却没有。@JörgWMittag但现在有多个实现。它们都不是静态的,随着升级和错误修复而改变。如果您对某个功能的理解基于它在特定实现上的工作方式,那么您对其他实现甚至同一实现的更高版本的理解可能是错误的。请注意,RubySpec现在已经过时了。其维护者将MRI开发人员缺乏使用作为其原因: