Ruby on rails is&;在ruby函数中?
过程示例Ruby on rails is&;在ruby函数中?,ruby-on-rails,ruby,Ruby On Rails,Ruby,过程示例 p = Proc.new { |x| puts x*2 } [1,2,3].each(&p) “&”告诉ruby将进程转换为块 我有上面的例子,不知道函数是否以proc作为参数 此外,这是rails中表单_的签名 form_for(record, options = {}, &block) &block是将块转换为proc还是反过来 No.&是一个一元运算符,它将过程转换为块(或其他),即 否。&是一个一元运算符,用于将proc转换为块(或其他),即 我有上面的例
p = Proc.new { |x| puts x*2 }
[1,2,3].each(&p)
“&”告诉ruby将进程转换为块
我有上面的例子,不知道函数是否以proc作为参数
此外,这是rails中表单_的签名
form_for(record, options = {}, &block)
&block是将块转换为proc还是反过来 No.
&
是一个一元运算符,它将过程转换为块(或其他),即
否。
&
是一个一元运算符,用于将proc转换为块(或其他),即
我有上面的例子,不知道函数是否以proc作为参数
它不是一个函数(Ruby没有函数)。是接线员。它仅在参数列表中有效,它将Proc
对象“展开”到块中,就像它已作为文本块传递一样。如果对象还不是一个Proc
,它将通过将消息发送到\u Proc
来尝试将其转换为一个
&block是将块转换为proc还是反过来
在这种情况下,&
是一个仅在参数列表中有效的符号(类似于*
表示rest参数的方式)。它“包装”传递给Proc
对象中的messagesend的文本块,并将其绑定到参数,以便在方法/块体中按名称提供它。通常,块是匿名的,只能隐式地yield
ed
我有上面的例子,不知道函数是否以proc作为参数
它不是一个函数(Ruby没有函数)。是接线员。它仅在参数列表中有效,它将Proc
对象“展开”到块中,就像它已作为文本块传递一样。如果对象还不是一个Proc
,它将通过将消息发送到\u Proc
来尝试将其转换为一个
&block是将块转换为proc还是反过来
在这种情况下,
&
是一个仅在参数列表中有效的符号(类似于*
表示rest参数的方式)。它“包装”传递给Proc
对象中的messagesend的文本块,并将其绑定到参数,以便在方法/块体中按名称提供它。通常,块是匿名的,只能隐式地yield
ed.->{print“baz”}'->'做什么?它使用1.9中出现的lambda语法,谢谢!还有一个问题。因为ruby中的任何东西都是对象。是对象吗?它的类型是什么?Ruby中的不是所有东西都是na对象。方法、运算符和块不是方法。->{print“baz”}'->'做什么?它使用1.9中出现的lambda语法,谢谢!还有一个问题。因为ruby中的任何东西都是对象。是对象吗?它的类型是什么?Ruby中的不是所有东西都是na对象。方法、运算符和块不是方法。那么它是否意味着“&”可以将参数列表中给定的文字块转换为proc,反之亦然?那么它是否意味着“&”可以将参数列表中给定的文字块转换为proc,反之亦然?
def foo
yield
end
def bar(&block)
block.call
end
baz = -> { print "baz" }
foo(baz) # => ArgumentError: wrong number of arguments (1 for 0)
foo(&baz) # => baz
foo(baz) # => ArgumentError: wrong number of arguments (1 for 0)
foo(&baz) # => baz