我将使用python作为我正在寻找的示例(如果您不了解Python,可以将其视为伪代码):
>>> a = 1
>>> type(a)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
我知道在红宝石中我能做到:
1.9.3p194 :002 > 1.class
=> Fixnum
Run Code Online (Sandbox Code Playgroud)
但这是确定对象类型的正确方法吗?
我有一个地图,可以更改值或将其设置为零.然后我想从列表中删除nil条目.该列表不需要保留.
这就是我目前拥有的:
# A simple example function, which returns a value or nil
def transform(n)
rand > 0.5 ? n * 10 : nil }
end
items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个循环并有条件地收集另一个数组,如下所示:
new_items = []
items.each do |x|
x = transform(x)
new_items.append(x) unless x.nil?
end
items = new_items
Run Code Online (Sandbox Code Playgroud)
但它似乎不是红宝石般的.有没有一种很好的方法可以在列表中运行一个函数来删除/排除nils?
在Ruby 1.8中,proc/lambda与另一方面之间存在细微差别Proc.new.
在Ruby中,如何从该类的实例中调用类方法?说我有
class Truck
def self.default_make
# Class method.
"mac"
end
def initialize
# Instance method.
Truck.default_make # gets the default via the class's method.
# But: I wish to avoid mentioning Truck. Seems I'm repeating myself.
end
end
Run Code Online (Sandbox Code Playgroud)
该行Truck.default_make检索默认值.但有没有提到这样说的方法Truck呢?好像应该有.
在扶手> 4.0.0发电机,创建CRUD操作before_action没有before_filter.它似乎做同样的事情.那么这两者之间的区别是什么?
对于它的所有瑕疵,PHP在这方面非常好.数组和哈希之间没有区别(也许我很天真,但这对我来说显然是正确的),并且要么迭代你要么做
foreach (array/hash as $key => $value)
Run Code Online (Sandbox Code Playgroud)
在Ruby中有很多方法可以做这种事情:
array.length.times do |i|
end
array.each
array.each_index
for i in array
Run Code Online (Sandbox Code Playgroud)
哈希更有意义,因为我总是使用
hash.each do |key, value|
Run Code Online (Sandbox Code Playgroud)
为什么我不能为数组做这个?如果我只想记住一种方法,我想我可以使用each_index(因为它使索引和值都可用),但是不得不这样做array[index]而烦人value.
哦,对,我忘记了array.each_with_index.然而,这一次吮吸,因为它去|value, key|和hash.each去|key, value|!这不是疯了吗?
在终端上运行brew命令时出现此错误.需要帮助解决.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- utils/popen (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/utils.rb:6:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:9:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)
这是我的env gem设置: