Оператор `*`, используемый в Ruby. Называется так, потому что похоже на насекомое, которое забрызгало лобовое стекло.
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 ответа

Где разрешено использовать оператор рубиновых сплатов?

Знаки классные. Они не только для взрывающихся массивов, хотя это весело. Они также могут приводить к массивам и выравнивать массивы (полный список того, что они делают, см. На http://github.com/mischa/splat/tree/master). Похоже, что нельзя выполнят…
22 апр '09 в 09:58
1 ответ

Сплат в не финальной позиции

Для следующего метода def mixed_args(a,b,*c,d) puts a,b,c,d end p mixed_args(1,2,3,4,5) Я получаю это сообщение об ошибке: синтаксическая ошибка, неожиданный tIDENTIFIER, ожидаемый tAMPER или '&' Не могли бы вы дать мне подсказку, какую информацию м…
25 сен '13 в 19:25
2 ответа

Можете ли вы объединить расширение аргумента с ключевым словом?

Что я хочу сделать, это: logged_in = { 'logged_in': True, 'username' : 'myself', } print render_template('/path/to/template.html', **logged_in, title = 'My page title', more = 'even more stuff', ) Но это не работает. Есть ли способ объединить расшир…
28 мар '12 в 07:14
2 ответа

Измените то, что операторы *splat и **splatty-splat делают с моим объектом

Как вы переопределяете результат распаковки синтаксиса *obj а также **obj? Например, можете ли вы как-то создать объект thing который ведет себя так: >>> [*thing] ['a', 'b', 'c'] >>> [x for x in thing] ['d', 'e', 'f'] >>> …
12 мар '14 в 23:15
2 ответа

Как я могу splattify анонимный объект, чтобы я мог использовать & метод на нем?

Я хочу использовать &method(:method_name) идиома, когда требуется более одного объекта method_name, Могу ли я сделать это под Ruby 1.9? Например, если у меня есть def move_file(old_filename, new_filename) STDERR.puts "Moving #{old_filename.inspe…
15 сен '11 в 02:41
1 ответ

Ruby - расширяющий метод с использованием super splat

В электронной книге "Комплексный курс по Ruby" у меня есть случай, когда метод дочернего класса расширяет метод родителей. Я не совсем понимаю, как это работает: class Parent def initialize(foo:, bar:) @foo = foo @bar = bar end end class Child < …
31 мар '17 в 15:04
3 ответа

Соединить с рубином

Скажи, что у меня есть arr = [1,2,3] Как я могу изменить этот метод, чтобы он добавлял каждый аргумент в массив? def add(*number) arr << *number end Так add(4,5,6) производит: arr #=> [1,2,3,4,5,6]
31 дек '13 в 19:56
5 ответов

Зачем вызывать "apply" вместо прямого вызова функции?

Когда я смотрел на исходный код Raphael или G.Raphael или других библиотек, я заметил, что разработчик делает что-то вроде этого: var val = Math.max.apply(Math, data_array); Почему бы просто не вызвать функцию напрямую, например: var val = Math.max(…
09 май '11 в 12:03
1 ответ

Ruby 1.9.2 - проблема с несколькими аргументами

Новичок в Ruby и работа над проблемой, когда я пытаюсь принять несколько аргументов в методе. Я думаю, я понимаю, почему это дает мне ошибку компиляции, но я не уверен, как это исправить. Любая помощь в том, как использовать несколько аргументов в а…
11 мар '11 в 07:21
2 ответа

Ruby send использует splat не работает должным образом

У меня есть класс служб, который помогает санировать данные из полезной нагрузки JSON. attr_reader :data, :method, :args def self.call(*args) new(*args).call end def initialize(data, sanitization_method, *method_args) @data = data @method = sanitiza…
03 ноя '14 в 17:56
1 ответ

Передача пустого хеша через двойной знак в рубине

Идея похожа на то, что вы сделали бы с декоратором в python, я не знаю, какие аргументы использует метод, поэтому я передаю *args, **kwargs в общем случае Проблема возникает, когда я хочу передать пустой хеш как kwargs методу, который не принимает а…
26 мар '17 в 03:28
1 ответ

Не удается зарегистрировать View и ViewModel между 2 сборками (UWP, Splat)

Используя последний предварительный просмотр RxUI v8 и Splat 2.0, в проекте UWP, который ссылается на библиотеку.Net Standard 2.0, я не могу зарегистрировать свое представление и модель представления, если они не находятся в одной сборке. Я имею: Lo…
11 дек '17 в 14:32
3 ответа

Обработка метода с необязательным аргументом, за которым следует список ключевых аргументов

Я хочу передать необязательный аргумент (любой тип данных, даже хэш), за которым следует список ключевых аргументов (которые могут быть пустыми) в метод. Вот что я получил: def my_method(subject = nil, **options) [subject, options] end Вывод метода …
10 янв '19 в 13:44
9 ответов

Собственное имя для оператора Python *?

Какое правильное имя для оператора *, как в function(*args)? распаковать, распаковать, что-то еще?
23 фев '10 в 22:48
2 ответа

Сплат в аргументной позиции

Почему этот код Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] вернуть это {:first_name=>"Shane", :last_name=>"Harvie"} Я знаю о Array#flatten, Но что * имею в виду? Как я могу найти информацию об этом?
26 дек '12 в 14:40
2 ответа

Есть ли имя для функции, которая возвращает позиционно-расширяющуюся версию своего аргумента?

Рассматривать splatter в этом коде Python: def splatter(fn): return lambda (args): fn(*args) def add(a, b): return a + b list1 = [1, 2, 3] list2 = [4, 5, 6] print map(splatter(add), zip(list1, list2)) Отображение n-арной функции на n сжатых последов…
24 фев '12 в 22:46
2 ответа

Можно ли использовать scala splat для всего, что не является varargs?

Учитывая, например: scala> def pipes(strings:String*) = strings.toList.mkString("|") который я могу назвать нормально: scala> pipes("foo", "bar") res1: String = foo|bar или с восклицательным знаком: scala> val args = List("a","b","c") scala…
13 апр '11 в 12:44
1 ответ

Использование сплат для отлова ошибок не работает

У меня много ошибок, которые нужно отловить, поэтому я собрал их в два массива и сделал константу для их хранения, однако при запуске программы я получаю исключение: C:/Users/thomas_j_perkins/bin/ruby/tool/sql_tool/whitewidow/lib/imports/constants_a…
10 сен '16 в 02:06
1 ответ

Развернуть список в функции args?

Дан список аргументов и функция двух арность: args = [5, 6] f = ((y,z)->y*z) Как развернуть аргументы в аргументы функции? - Например, в Python вы можете сделать: f(*args), Что я пробовал (я полагаю, больше в стиле JavaScript): Function.call.appl…
03 сен '14 в 06:43