def passingHash(it)
p it
end
def passingKeywordArg(name: 'David', number: 15)
p name
p number
end
# We actually pass a hash here.
passingHash(name: "hello", number: 100) # Print {:name=>"hello", :number=>100}
# These are two arguments.
passingKeywordArg(name: "hello", number: 100) # Print "hello" 100
我正在学习Ruby。我发现这两个调用看起来相同,但是它们的参数完全不同。在这里建议使用=>表示哈希吗?我查看了此code style guideline,发现不建议使用=>。我误会了吗?
本教程并不是说使用=>
(又称“哈希火箭”)是不好的,而是说使用除符号(:foo
)之外的字符串或其他对象会占用更多的内存。
{ :foo => 'bar' }
是将符号定义为键的原始方法。比较这两个定义:
{ :foo => 'bar' } # => {:foo=>"bar"}
{ foo: 'bar' } # => {:foo=>"bar"}
我们倾向于使用foo:
,因为我们是lazy。
符号花费不高,但这是一个不同的主题,为什么只需稍加搜索即可找到它。
作为开发人员,我们需要了解使用一种算法或对象与另一种算法或对象的成本。使用字符串或其他任何键作为键都有其时间和位置,知道这些键可以节省大量内存或开发时间。
最后,样式指南很有用;定期阅读其中的一些内容,并考虑他们的建议。这些指南针对团队,以帮助他们遵循适用于Ruby的良好编码实践,以一种通用且一致的方式编写代码,但是并不能一成不变。知道为什么要推荐它们很重要,因为有时候我们不得不忽略或修改规则,但是当我们这样做时,我们最好准备在代码审查中解释原因。
而且,如果您不熟悉Ruby的编码样式,建议您学习Rubocop,它是检查一致和可接受的编程样式并捕获错误的好工具。