Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 on rails 什么是<<&引用;你用ruby做什么?_Ruby On Rails_Ruby_Object_Operators - Fatal编程技术网

Ruby on rails 什么是<<&引用;你用ruby做什么?

Ruby on rails 什么是<<&引用;你用ruby做什么?,ruby-on-rails,ruby,object,operators,Ruby On Rails,Ruby,Object,Operators,我是Ruby新手,所以我仍在学习一些东西。但是,我对Java和C有很好的经验 我想知道这到底有什么作用: [ 'a','b', 'c' ].each_with_index {|item, index| result << [item, index] } ['a','b','c']。每个带有{u索引{项,索引}结果的{p>都是的 在Ruby中,所有C/Java中的运算符,如+、-、*、/,等等,实际上都是方法调用。您可以根据需要重新定义它们 class MyInteger def

我是Ruby新手,所以我仍在学习一些东西。但是,我对Java和C有很好的经验

我想知道这到底有什么作用:

[ 'a','b', 'c' ].each_with_index {|item, index| result << [item, index] }
['a','b','c']。每个带有{u索引{项,索引}结果的{p>都是


在Ruby中,所有C/Java中的运算符,如+、-、*、/,等等,实际上都是方法调用。您可以根据需要重新定义它们

class MyInteger
  def +(other)
    42 # or anything you want
  end
end

数组定义了
这基本上是一个追加运算符

它可用于将元素附加到数组或子字符串附加到字符串

用于阵列

1.9.2-p290:009>arr=[1,2,3,4,5]

=> [1, 2, 3, 4, 5] 
1.9.2-p290:010>arr

用于字符串

1.9.2-p290:011>str=“ruby”


1.9.2-p290:012>str

顺便说一句,这大致相当于首选的
结果=['a','b','c']。每一个都带有索引。到\u a
@NiklasB。我想说它完全相等(也相当漂亮)。@Andrew:除非
结果之前是空的……还有另一个,顺便说一句,它不是那么漂亮:
['a','b','c'].zip(0..(1.0/0))
:D@NiklasB.啊,没想到。但是你可以直接做
results+[…].each…
。我也喜欢第二个。但我认为直接使用
Float::INFINITY
会更明显地表明您试图获得一个无限范围。@安德鲁:是的,但是
Float::INFINITY
根本无法键入。警告:以意外的方式重新定义运算符可能会导致代码维护和调试问题,并且本质上是疯狂的。重新定义
+
总是返回42肯定是疯狂的。(我在
irb
中尝试过一次重新定义
Fixnum++
,结果
irb
搞砸了。)但是在Ruby中自定义类的操作符并不一定是坏的,因为所有操作符都是方法调用,当你看到一个运算符时,你可能会认为它是对用户定义方法的调用。但是很容易滥用操作符重载,我们在90年代用C++学习了这个教训。此外,你应该返回11,没有AMP去。42、你都是对的。我只是指出露比“运算符重载”不如C++运算符重载那么糟糕,因为你不必怀疑给定的操作符是否是“真正”操作符或者是否重载;你知道这是方法调用,因为所有运算符都是方法调用。
=> [1, 2, 3, 4, 5, 6] 
=> "ruby" 
=> "rubyrails"