История изменений
Исправление special-k, (текущая версия) :
У Смоллтока они бы позаимствовали раньше, а сейчас - у языка состоящего из костылей :)
Ничего подобного.
Вот ваш «keyword arguments»
def my_function(**kwargs):
print str(kwargs)
my_function(a=12, b="abc") #{'a': 12, 'b': 'abc'}
def a options
p options
end
a b: 1, c: 2 #{:b=>1, :c=>2}
#при том, что на самом-то деле это хэш, и можно сделать вот так
h = { b: 1, c: 1 }
a h #а в питоне?)
Раньше
class Hash
def with_defaults(defaults)
self.merge(defaults) { |key, old, new| old.nil? ? new : old }
end
end
def a opts
opts = opts.with_defaults b: 1, c: 2 # значения по умолчанию
b = opts[:b]
c = opts[:c]
other_opts = opts[:other_opts]
end
Теперь
def a( b: 1, c: 2, **opts )
other_opts = opts[:other_opts]
end
#и по-прежнему
h = { b: 1, c: 2, other_opts: 3 }
a h
Исходная версия special-k, :
У Смоллтока они бы позаимствовали раньше, а сейчас - у языка состоящего из костылей :)
Ничего подобного.
Вот ваш «keyword arguments»
def my_function(**kwargs):
print str(kwargs)
my_function(a=12, b="abc") #{'a': 12, 'b': 'abc'}
def a options
p options
end
a b: 1, c: 2 #{:b=>1, :c=>2}
#при том, что на самом-то деле это хэш, и можно сделать вот так
h = { b: 1, c: 1 }
a h #а в питоне?)
Раньше
class Hash
def with_defaults(defaults)
self.merge(defaults) { |key, old, new| old.nil? ? new : old }
end
end
def a opts
opts = opts.with_defaults b: 1, c: 2 # значения по умолчанию
b = opts[:b]
c = opts[:c]
other_opts = opts[:other_opts]
end
Теперь
def a( b: 1, c: 2, **opts )
other_opts = opts[:other_opts]
end
#и по-прежнему
h = { b: 1, c: 2, other_opts: 3 }
a h