Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby=>;操作人员_Ruby_Syntax - Fatal编程技术网

Ruby=>;操作人员

Ruby=>;操作人员,ruby,syntax,Ruby,Syntax,在哪里可以找到对Ruby中=>操作符的解释 比如说, class Acct < ActiveRecord::Base validates_confirmation_of :password, :email_address, :on => :create end 类帐户:创建 结束 在这种情况下,=>运算符在做什么?符号“=>”不是运算符。这只是一种句法手段,用来表示其他两个元素之间存在“键值”关系。它用于定义散列(或关联数组,在其他一些语言中称为散列,如PHP)。从这个意义上

在哪里可以找到对Ruby中
=>
操作符的解释

比如说,

class Acct < ActiveRecord::Base
  validates_confirmation_of :password, :email_address, :on => :create
end
类帐户:创建
结束

在这种情况下,
=>
运算符在做什么?

符号“=>”不是运算符。这只是一种句法手段,用来表示其他两个元素之间存在“键值”关系。它用于定义散列(或关联数组,在其他一些语言中称为散列,如PHP)。从这个意义上说,因为“=>”不是运算符,所以它什么都不做(就像符号“[”和“]”用于定义数组时不做任何事情一样)。如果您仍然感到困惑,请查看Hash Ruby类并将其与Array类进行比较。

要扩展已接受的答案(它不是运算符),请将其基本上看作逗号

{ "foo" => "bar", "a" => "b" }
逗号分隔散列中的每一对,而
=>
分隔键和对中的值。

散列火箭语法 符号不是运算符,只是用于定义文本哈希对象的语法的一部分。它通常被称为散列火箭

通常,文本哈希对象的定义如下:

a = { :x => 1, :y => 2 } # same thing as: a = Hash.new; a[:x] = 1; a[:y] = 2
当然,它可以传递给一个方法:

def f(x); end; f({:x => 1, :y => 2})
碰巧,当哈希作为最后一个参数传递给方法时,可以删除对象文本的
{}
部分:

f(:x => 1, :y => 2)
paren也是可选的,因此我们得到如下结果:

f :x => 1:, :y => 2 # and of course...
validates_confirmation_of :password, :email_address, :on => :create
最后(仅在现代Ruby中)对于哈希键是符号的特定情况,可以编写key值,因此:


这里请注意,方法调用可以在类定义中进行。它们像任何其他方法调用一样执行,但在定义时执行。对于像Rails这样的包来说,它们特别有用,Rails执行大量元编程来扩展其应用程序域的语言和库对象。

令人困惑的是,定义散列的{brates}在传递给方法时是可选的,这使得它看起来像关键字参数,如本例所示:“def(x)x end;f:a=>:b,:c=>:d”“”#=>{:c=>:d,:a=>:b}这是这个问题的唯一答案,实际上提供了可操作的信息。非常感谢。
f x: 1, y: 2 # not to mention...
validates_confirmation_of :password, :email_address, on: :create