Eugene
то таб ему не пробел, то ; забудешь где-нить потом ищешь с огнем
Eugene
нет чтоб в вебморде тык-пык и все збс
Alexander
Eugene
да каво там, я не Володя..
Serge
Serge
Serge
Ну и, как бы, рубям пофиг на отступы должно быть
Igor
может это рубитон
Serge
❯ cat test.rb
["hello", "lal", "жопа"].each do |word|
puts word
end
❯ ruby test.rb
hello
lal
жопа
Igor
на самом деле я бы пару фич из раби в пехто засунул
Serge
Eugene
Чочо?
да я уже хотел тебя потерзать, но сам нашел потерянный ; в конфиге нжинкса :)
Serge
(я всю жись был уверен, что по фичам руби и удав на 99% совпадают)
Igor
Это какие?
ну мне нравится оператор «?» и bool, для питона это бы органично смотрелось
Igor
и там емнип регулярки более интегрированы в язык
Igor
но это не точно
Serge
Igor
да не, в раби же можно типа условия там хитрые делать, когда воросик в конце ставишь, нет?
Igor
ещё в раби удобны конструкции do if cond
Igor
мне их не хватает
Serge
Igor
не, это тернарный оператор
Igor
их есть и в пехтоне, и в сях, да
Serge
А про что тогда?
Igor
Serge
А, погоди, понял
Serge
Это просто имя метода такое :)
Serge
Но удобно и читаемость повышает, да
Igor
вот чото типа такого, но он вроде ещё фичастее там было
Igor
да, точно
Igor
там ? можно в имена методо
Igor
вместо is_
Igor
вооот
Igor
вспомнил)
Serge
Это если метод такой есть :)
Igor
ну там нельзя классу, например, задать метод 'alive?', который типа true/false возвращает, если какое-то условие?
Serge
Я для одной хуитки, например, сделал вот такое:
def quirks?(time_filter)
DEVICE_QUIRKS.any? do |q|
q[:name] == name && …
end
end
Igor
будет типа connection.alive?
Igor
ваще пуля
Serge
И ты такой берёшь и делаешь if device.quirks? и работает
Serge
Igor
да, заебись
Igor
особенно классно, когда
Eugene
эй погромисты! астанавитесь!
Serge
Igor
device.send('aaaaa') if device.alive?
Igor
вот в питоне это бы норм смотрелось, имхо
Igor
с его отступами и прочей человекопонятностью
Stanislav
Igor
я до пехтона с рубей начинал как раз
Stanislav
для меня выглядит как перл прост :) нихуя не понятно
Igor
но это было оооч давно и не долго
Stanislav
привык уже к сишечке и явушке
Igor
сишечка топчек, что тут скажешь
Igor
жаль, на ней не приходится писать
Stanislav
ну хз, меня вот бесит что в си исключений нет. че-нить не так - получи сегфолт ! ладно хоть коредамп складывает
Igor
Eugene
а то расслабились с этими петонами
Stanislav
сложно же. во всяких питонах искаропки уже всякие хэшмапы и работа со строками, динамичесские массивы и классы.
а в си что? сидишь такой malloc, realloc, malloc, опа память потекла 😃 или сегфолт.
Evgeniy
втопку
Serge
Serge
Serge
пздц как вы это читаете
Там всё просто же — .any? возвращает true, если условие внутри блока (do…end) верно хотя бы для одного элемента
Serge
В блоке через | | задаём имя для абстрактной переменной, на которой будем проверять условие, в неё будут подставляться элементы того, для чего позвали any?
Serge
Вот и получается так. Можно и похоже на Си блоки оформлять:
my_cool_array.each { |element|
element += 100500
}
Evgeniy
погромисты
Serge
А можно сделать по умному вот так (то же самое):
my_cool_array.map! { |elem| elem + 100500 }
Serge
@blademd, а select в петоне есть?
Igor
select?
Igor
switch?
Serge
Ща покажу
Igor
Serge
arr = [1,2,3,4,5,6,7,8]
=> [1, 2, 3, 4, 5, 6, 7, 8]
arr.select {|a| a.odd?}
=> [1, 3, 5, 7]
arr.select {|a| a.even?}
=> [2, 4, 6, 8]
Stanislav
Serge
Типа возвращает массив, элементы которого соответствуют условию внутри блока
Igor
arr = [1,2,3,4,5,6,7,8]
=> [1, 2, 3, 4, 5, 6, 7, 8]
arr.select {|a| a.odd?}
=> [1, 3, 5, 7]
arr.select {|a| a.even?}
=> [2, 4, 6, 8]
есть filter, filter(lambda x: x % 2 == 0, list)
Igor
там богатый набор фп фич — filter, map, reduce