2011-03-10 55 views
2

任何人都可以向我解释在ruby中的“左移”语法是什么意思?在Ruby中左移意味着什么?

举例来说,我有这个

File.open(folder, 'w'){ |f| f << datavalue } 

我知道它的意思写每个datavalue到文件夹,但|f| f << datavalue部分没有道理给我。为什么f在括号内,相对于左移并将数据值写入文件夹?

基本上,我不“吨理解这一行

{ |f| f << datavalue } 
+1

我想你应该考虑阅读一些Ruby语言的介绍。有很多针对初学者的Ruby教程。这将有助于你理解你所得到的答案。 http://stackoverflow.com/questions/5259332/ruby-write-value-from-sql-table-to-a-tmp-folder –

回答

4

File.open(folder, 'w'){ |f| f << datavalue }的含义是相同的文字:

File.open(folder, 'w') do |f| 
    f << datavalue 
end 

两者都是红宝石块表示法的实例中的块的Ruby是匿名方法,块预期的变量是在竖线之间声明的,在这种情况下,变量f表示通过File.open命令返回的文件对象

至于<<运营商。这里它被用作连接器。我相信它在对象(如字符串,数组,在这种情况下是一个文件)上使用时称为附加运算符。例外情况是,如果对象是数字,那么它将成为左移操作符来移位数字的位。

0
some_text = "world!" 
hello = "Hello, " 

hello << some_text 

puts hello # prints "Hello, world!"