Описание тега double-splat
Синтаксис аргументов ключевого слова в Python и Ruby, например **kwargs
0
ответов
Цепные двойные знаки в рубине
Является ли следующее поведение ошибкой или функцией? class A def initialize(**options) @options = options end def foo(**options) bar(**@options, **options) end def bar(**options) end def print puts @options.inspect end end a = A.new(one: 1) a.print…
25 май '14 в 20:08
2
ответа
Измените то, что операторы *splat и **splatty-splat делают с моим объектом
Как вы переопределяете результат распаковки синтаксиса *obj а также **obj? Например, можете ли вы как-то создать объект thing который ведет себя так: >>> [*thing] ['a', 'b', 'c'] >>> [x for x in thing] ['d', 'e', 'f'] >>> …
12 мар '14 в 23:15
2
ответа
Оператор двойных сплатов деструктивно модифицирует хеш - это ошибка Ruby?
Я заметил очень удивительное поведение с ** (двойной сплат) оператор в Ruby 2.1.1. Когда пары ключ-значение используются перед **hashхеш остается неизменным; однако, когда пары ключ-значение используются только после **hashхэш постоянно изменяется. …
25 апр '14 в 00:49
3
ответа
Распаковка (сплат) ключевых слов в Ruby
То, что происходит ниже, кажется мне немного странным. def f(a, b) puts "#{a} :: #{b}" end f(*[1, 2], **{}) # prints "1 :: 2" hash = {} f(*[1, 2], **hash) ArgumentError: wrong number of arguments (3 for 2) f(*[1, 2], **Hash.new) ArgumentError: wrong…
17 мар '17 в 03:27
1
ответ
Какой смысл использовать двойную косую черту Руби (`**`) в вызовах методов?
С помощью одного знака мы можем расширить массив на несколько аргументов, что сильно отличается от прямой передачи массива: def foo(a, b = nil, c = nil) a end args = [1, 2, 3] foo(args) # Evaluates to foo([1, 2, 3]) => [1, 2, 3] foo(*args) # Eval…
26 мар '14 в 18:34
1
ответ
Параметр Ruby double splat слишком жадный с аргументом Hash
В Ruby 2.4.1 у меня есть такой метод: def example(*args, **kwargs) p args p kwargs end Я могу передать позиционные аргументы, которые не являются хэшами просто отлично: irb(main):001:0> example("Greetings") ["Greetings"] {} И если я хочу использо…
10 июл '17 в 17:12
2
ответа
Деструктуризация параметров (эквивалент двойного сплата Python)
В Python я могу передать dict, чьи ключи соответствуют именам параметров с ** (двойной знак) оператор: def foo(a, b): print (a - b) args = {'b': 7, 'a': 10} foo(**args) # prints 3 Как сделать то же самое в ES6? Это не работает: function foo(a, b) { …
17 авг '17 в 12:48
1
ответ
Расширение пустого хеша в переменной с двойным знаком в Ruby
Я получил это странное поведение, пытаясь расширить хеш-переменную, используя двойной знак. Не знаю, почему это происходит. Моя рубиновая версия ruby 2.2.6p396 (2016-11-15 revision 56800) сценарий class MyClass def my_method; end end MyClass.new.my_…
15 мар '17 в 16:30
1
ответ
Что делает двойной знак в вызове метода?
Во время подготовки к экзамену Ruby Association на сертифицированный Ruby Programmer я решал подготовительный тест и столкнулся с таким сценарием: def add(x:, y:, **params) z = x + y params[:round] ? z.round : z end p add(x: 3, y: 4) #=> 7 // no …
18 авг '18 в 03:06
2
ответа
Двухуровневые брызги TCL
Если у меня есть процедура или команда в TCL с переменным числом аргументов, можно использовать, если элементы списка являются входными данными, оператор "splatter", например: set a [list "ko" ] set m [ list "ok" "bang" ] lappend a {*}$m Но что, есл…
28 апр '17 в 12:52
2
ответа
Двойной знак "ноль"
Насколько я понимаю, что один знак без объекта массива вызывает to_a а затем разделяет элементы на части. И с тех пор nil.to_a определяется как []происходит следующее преобразование: [:foo, *nil, :bar] # => [:foo, *nil.to_a, :bar] # => [:foo, …
07 дек '15 в 03:04
2
ответа
Заставить объект Ruby реагировать на оператор двойного знака **
У меня есть библиотека с #execute метод вроде этого def execute(query, **args) # ... end У меня есть класс, который генерирует данные для args (в котором много логики в зависимости от возможностей пользователя) class Abilities def to_h { user: user …
18 ноя '19 в 11:36