2024-09-29 23:33:10 发布
网友
在Python中,有一个名为__getitem__的内置方法,您可以将其添加到类中以定制获取项的实现。例如:
__getitem__
class containerlist (object): def __init__(self, *args): self.container = [x for x in args] def __getitem__(self, i): return self.container[i]
在Ruby中,对于这个或其他Python内建,是否有一个等价的__len__或{}?在
__len__
在Ruby中,使用[]访问项,方法被称为[]。在
[]
只是为了说明@Jörg W Mittag
class Containerlist def initialize( *args) @container = args end def [](i) @container[i] end end cl = Containerlist.new(3,4,5) #new creates a new obj and calls initialize p cl[1] #interpreted as cl.[](1) # => 4
关于__len__:apparently,Python将len(a_list)解释为a_list.__len__,以适应初学者。Ruby更喜欢size和/或{},而不是这样做——它只是a_list.size。所以:
len(a_list)
a_list.__len__
size
a_list.size
在ruby中,数组的长度(也可以是散列)可以用两种方式编写(至少我知道)。为对象调用length或count方法。对于字符串对象,可以使用length方法
length
count
irb(main):001:0> x = "some string" => "some string" irb(main):002:0> x.class => String irb(main):003:0> x.length => 11 irb(main):005:0> y = (1..9).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9] irb(main):006:0> y.length => 9 irb(main):007:0> y.count => 9 irb(main):008:0>
ruby中的__contains__等价于include?方法。实际上,它更有可能是in关键字。在
__contains__
include?
in
数组的find_index和字符串的index可能会有所帮助。在
find_index
index
irb(main):013:0> y.find_index(3) => 2 irb(main):016:0> x.index('s') => 0 irb(main):017:0> x.index('s', 4) #the second argument is offset value. => 5
我不是一个经验丰富的鲁比主义者,但希望这些将有助于第一步。也希望不要在你的ruby路径上误导你:)
在Ruby中,使用
[]
访问项,方法被称为[]
。在只是为了说明@Jörg W Mittag
关于},而不是这样做——它只是
^{pr2}$__len__
:apparently,Python将len(a_list)
解释为a_list.__len__
,以适应初学者。Ruby更喜欢size
和/或{a_list.size
。所以:在ruby中,数组的长度(也可以是散列)可以用两种方式编写(至少我知道)。为对象调用
length
或count
方法。对于字符串对象,可以使用length
方法ruby中的
^{pr2}$__contains__
等价于include?
方法。实际上,它更有可能是in
关键字。在数组的
find_index
和字符串的index
可能会有所帮助。在我不是一个经验丰富的鲁比主义者,但希望这些将有助于第一步。也希望不要在你的ruby路径上误导你:)
相关问题 更多 >
编程相关推荐