Size: a a a

Чат руби-школы

2020 May 03

SS

Sergey Shevtsov in Чат руби-школы
в массиве получишь уже вычисленный результат
источник

PT

Pineapple Thief in Чат руби-школы
ну не совсем справа налево
array << value - это просто синтаксический сахар для array.<<(value)
источник

SS

Sergey Shevtsov in Чат руби-школы
а как ?
источник

SS

Sergey Shevtsov in Чат руби-школы
сначала вычислится вызов функции fibonacci, он в стеке будет лежать последним, потом добавление в массив
источник

PT

Pineapple Thief in Чат руби-школы
а, в этом смысле да
источник

SS

Sergey Shevtsov in Чат руби-школы
на самом деле, для понимания надо разжевать, что тут значит "справа налево"
есть у тебя некая функция
def func(*args)
end

ты хочешь получить результат её работы и положить в массив
array.push(func(*args))

Как это работает. Это похоже на математику, сначала вычисляется то, что глубже уложено в скобки — это func(*args), вызывается функция func и всё выражение принимает вид array.push(result), потом вызывается .push(result), который делает свою работу(и ничего не возвращает, кстати, а просто кладет в массив то, что ему передали), ну и всё. на этом стек вызовов заканчивается.
источник

РП

Рифмы И Панчиков... in Чат руби-школы
Вот, спасибо большое
источник

SS

Sergey Shevtsov in Чат руби-школы
ну ты должен был сам подумать)
источник

SS

Sergey Shevtsov in Чат руби-школы
а то сразу получить ответ не совсем правильно
источник

РП

Рифмы И Панчиков... in Чат руби-школы
Это не все, что мне нужно сделать)
источник

SS

Sergey Shevtsov in Чат руби-школы
ну либо ты можешь более декларативно поступить.
result = func(*args)
array.push(result)

это такой более очевидный подход. иногда так лучше, чем создавать большие вложенности.
источник

SS

Sergey Shevtsov in Чат руби-школы
к функциональному стилю нужна привычка. в руби функции — объекты первого класса, то есть их можно передавать как аргументы в другие функции, они там возвращают результат и так далее...
а также можно часто увидеть цепочки через fluent interface типа там collection.map(...).split(...).join(...) — это я утрирую, но такие пайплайны распространены тоже.
тут надо балансировать между сложностью чтения и сокращением строк кода. я за хорошую читаемость.
источник

РП

Рифмы И Панчиков... in Чат руби-школы
Да, спасибо
Так и мне будет понятнее)
источник

И

Иван in Чат руби-школы
Sergey Shevtsov
к функциональному стилю нужна привычка. в руби функции — объекты первого класса, то есть их можно передавать как аргументы в другие функции, они там возвращают результат и так далее...
а также можно часто увидеть цепочки через fluent interface типа там collection.map(...).split(...).join(...) — это я утрирую, но такие пайплайны распространены тоже.
тут надо балансировать между сложностью чтения и сокращением строк кода. я за хорошую читаемость.
В руби как раз методы это одна из немногих вещей которая не является объектом по дефолту, передавать методы в другие методы нельзя пока их явно не преобразуешь в объект.
источник

ME

Mykhailo Efimenko in Чат руби-школы
всем привет ! Есть еще кто не спит ? )
источник

ME

Mykhailo Efimenko in Чат руби-школы
помогите плиз кто знает, затрял на проблеме, при попытке require "data_mapper" не стартует синатра сервер: unable to activate dm-serializer-1.2.2 because json-2.3.0 conflicts with json (~1.6)
источник

AS

Alexander Smirnov in Чат руби-школы
Mykhailo Efimenko
помогите плиз кто знает, затрял на проблеме, при попытке require "data_mapper" не стартует синатра сервер: unable to activate dm-serializer-1.2.2 because json-2.3.0 conflicts with json (~1.6)
какой у вас в гем файле?
источник

ME

Mykhailo Efimenko in Чат руби-школы
спасибо что откликнулся добрый человек !
источник

ME

Mykhailo Efimenko in Чат руби-школы
у меня в гем файле было просто написано gem 'sinatra', сейчас я добавил туда gem 'data_mapper' и запустил bundle install, bundle установил другие версии
источник

ME

Mykhailo Efimenko in Чат руби-школы
источник