
Alexander
07.11.2016
12:54:07

Alex
07.11.2016
12:54:28
concern по сути никуда не уходит, он как был в контроллере так и остался.

Alexander
07.11.2016
12:54:46

Google

Alexander
07.11.2016
12:56:19
https://regex101.com/r/8WTKKV/2
нормально ловит, без всяких \b
кстати, прикольно, что можно шарить (прям со строкой тестовой)

0x58
07.11.2016
12:57:21
Бей на сервисы
А как узнать когда применять сервисы? И где вообще можно узнать что это, как и зачем?

Alex
07.11.2016
12:57:46
https://blog.engineyard.com/2014/keeping-your-rails-controllers-dry-with-services

Space
07.11.2016
13:33:05
Ребят, привет.
Может кто ищет работу сейчас?
Ищем Ruby on Rails разработчика:
https://netology-group.ru/career#vacancy10
У нас два технологичных образовательных проекта:
http://foxford.ru/
http://netology.ru/
Видео с нашим офисом:
https://www.youtube.com/playlist?list=PL9gzo2sIIvllJZuMBeSDcxEhOt12QjNdB
Пишите в личку или на: t.dolgova@netology-group.ru

Anon
07.11.2016
13:36:29
Как называются конструкции вида a.each_with_index.reduce(0) { |prev, (cur, i)| #... }?

Roman
07.11.2016
13:37:35
Блок же, нет?

Alex
07.11.2016
13:37:42
Итераторы

Anon
07.11.2016
13:38:00
я имею в виду чейнинг этих итераторов и добавочные аргументы блока в круглых скобках

Alex
07.11.2016
13:38:15
какие добавочные аргументы?

Anon
07.11.2016
13:38:26
(сur, i)

Alex
07.11.2016
13:38:41
Это не добавочные аргументы
это все аргументы которые тебе в блок передал итератор

Anon
07.11.2016
13:39:21
каким образом это все вместе оказывается в одном блоке

Google

Alex
07.11.2016
13:41:28
block.call(*args)
как то так я думаю.
просто каждый итератор добавляет к args какие то свои данные еще.

Pavel
07.11.2016
14:08:30
Можно использовать yield в коде итератора
yield x1, x2, ...., xN передает аргументы в блок
x = yield возвращает аргументы из блока
А сам yield - это вызов блока

Alex
07.11.2016
14:10:08
yield это генератор а не итератор
я как то обжегся совсем недавно пытаясь сделать цепочку через yield, оказывается ему блок обязательно нужен

Pavel
07.11.2016
14:10:41
Генератор чего?

Alex
07.11.2016
14:10:41
А итератор делается через Enumerate
Данных, чего.

Pavel
07.11.2016
14:11:36
Достаточно определить метод, а при вызове метода прикрепить блок. С yield код получается короче

Alexander
07.11.2016
14:11:53

Alex
07.11.2016
14:11:58
your_func.to_a сработает?

Иван
07.11.2016
14:13:02

Alex
07.11.2016
14:13:09
ну да
а если ты не передашь блок а передашь цепочку?
получится ошибка "давай блок"

Pavel
07.11.2016
14:13:51
Цепочку после блока?

Google

Alex
07.11.2016
14:14:00
о госпаде
напиши пример функции генератора пожалуйста прям сюда в чат.

Alexander
07.11.2016
14:14:37

Pavel
07.11.2016
14:14:51
Я не понял
О чем он

Alex
07.11.2016
14:14:57
напиши пример функции генератора пожалуйста прям сюда в чат.
Ну так сначала напиши пример подобной функции

Pavel
07.11.2016
14:15:16
Генератора?

Alex
07.11.2016
14:15:19
да ....

Pavel
07.11.2016
14:15:28
Мы вроде про итераторы говорили

Alex
07.11.2016
14:15:35
yield это генератор

Иван
07.11.2016
14:16:08
ничёнепонимаю

Alex
07.11.2016
14:16:10
надо ща самому с этим вопросом разобраться по быстрому

Alexander
07.11.2016
14:16:11

Pavel
07.11.2016
14:16:18
Ща
Секунду

Alex
07.11.2016
14:16:27

Alexander
07.11.2016
14:16:37
yield — это часть синтаксиса языка, как и объявление блока (поэтому ее нельзя переопределить). Когда в теле метода мы вызываем yield, то подразумеваем следующее: «отдай управление блоку, а когда тот закончит, верни управление этому методу».
что из этого «генератор»?

Иван
07.11.2016
14:17:23
вот такой же вопрос

Google

Pavel
07.11.2016
14:17:33
Я тоже не понимаю, почему он называет его гегератором

Alexander
07.11.2016
14:17:33
yield почти block.call, только когда у тебя нет аргумента &block, но при этом извне кидаешь блок

Alex
07.11.2016
14:18:15
Ладно возможно я в рубях неправ с терминологией.
В жабаскрипте это генератор афаик
#!/usr/bin/env ruby
def myfunc
yield 1
yield 2
end
p myfunc()
$ ./yield_example.rb
./yield_example.rb:3:in `myfunc': no block given (yield) (LocalJumpError)
from ./yield_example.rb:7:in `<main>'

Alexander
07.11.2016
14:18:57
отличие yield от &block в том, что если ты из метода, в котором принимаешь блок, хочешь отдать этот блок другому методу — тебе достаточно передать его как аргумент. если юзаешь yield — у тебя есть только block_given? и всё, не передашь
yield пытается выполнить не смотря ни на что. как block.call у тебя выбросит эксепшен «не знаю метод call для `nil`», если ты не будешь проверять

Admin
ERROR: S client not available

Pavel
07.11.2016
14:22:12
допустим, что так

Alex
07.11.2016
14:22:40

Beemo
07.11.2016
14:23:01
всем привет

Alexander
07.11.2016
14:23:06
def each_with_yield
@items.each { |item| yield item }
end
def each_with_block(&block)
@items.each(&block)
end

Alex
07.11.2016
14:23:16

Alexander
07.11.2016
14:23:56
Это что?
не первый день на свете живёшь же, поймёшь ?

Pavel
07.11.2016
14:24:09
холивар
еее

Alex
07.11.2016
14:24:15
Костыль для блоко-подхода? а почему бы просто не юзать енумератор?

Lupsick
07.11.2016
14:24:23

Google

Beemo
07.11.2016
14:24:32

Alexander
07.11.2016
14:24:35

Beemo
07.11.2016
14:24:38
сорян

Pavel
07.11.2016
14:24:54
короче

Alex
07.11.2016
14:25:05
Я знаю отличия двух типов блоков ? я говорю что блоки не всегда удобны.

Pavel
07.11.2016
14:25:08
использовать yield или &block дело каждого

Alex
07.11.2016
14:25:54
для меня правда сюрпризом оказалось что Enumerator по умолчанию не lazy

Alexander
07.11.2016
14:26:11

Иван
07.11.2016
14:27:52

Alex
07.11.2016
14:28:07
что то вроде того. Я про то что блоки в цепочку не засунешь.
Для меня это странно было потому что в джаваскрипте yield вроде как просто итератор возвращает

Иван
07.11.2016
14:29:05
if block_given?
...
else
self.to_enum
end

Alex
07.11.2016
14:29:21
интересный линк ?

Anon
07.11.2016
14:29:45
а по какому принципу эти добавочные аргументы идут в блок, почему оборачиваются в круглые скобки? Я язык генераторов-итераторов плохо понимаю

Pavel
07.11.2016
14:29:53
а лол

Alex
07.11.2016
14:29:58
да и сайт интересный

Pavel
07.11.2016
14:30:49
объясните пожалуйста про генератор
я так и нифига не понял