@rubyschool

Страница 829 из 921
Dmitry
13.09.2018
15:37:28
GG
13.09.2018
15:38:50
Если удобно, это норма)

Google
Ro
13.09.2018
15:41:01
Скиньте пример программы с функцией и без

Tony
13.09.2018
15:41:46
Возможно мои ответы чем-то помогли
Спасибо ? я действительно читала об'яснение def в других языках. Но не в С. Попробую там порыться. Это, помните, как в школе. Что-то не понимаешь, не понимаешь, а потом кто-то об'яснит по-другому или просто найдёшь где-то описание тебе понятное - и опа!все прояснилось ? но у меня пока нет?

Dmitry
13.09.2018
15:42:21
Ого. Я стеснялся так наглеть)))
Это шутка если что (но переменную в начале объявляю).

Tony
13.09.2018
15:46:35
а что вы делаете на практике?
Пока ничего? Учусь по видео Романа. Все было понятно до этого камня преткновения? Без def могу накатать что-то (просто конечно!). А потом Роман в видео дал задание - переписать программу, но применить def. И все. Чёрная дыра просто

Ishmael
13.09.2018
15:48:33
Пока ничего? Учусь по видео Романа. Все было понятно до этого камня преткновения? Без def могу накатать что-то (просто конечно!). А потом Роман в видео дал задание - переписать программу, но применить def. И все. Чёрная дыра просто
желательно придумать себе интеречное задание, тогда уже будет видно наглядно где можно деф применить). можно кулинарную книгу например, или еще что вам может быть интересно.

Tony
13.09.2018
15:49:17
Ты смотрела на def как на удобный инструмент уменьшающий количество строк за счет объединения логического блока кода и использование этого в последующем?
Ну как бы так это везде и преподносят. Что вот замечательное def. Туда записываешь что-то, а потом в нужном месте программы вызываешь функцию и все пучком. Если с элементарными примерами типа def say_hi ещё можно разобраться. То когда начинается что-то сложнее - это мрак?

Google
Roman
13.09.2018
15:51:29
Ну как бы так это везде и преподносят. Что вот замечательное def. Туда записываешь что-то, а потом в нужном месте программы вызываешь функцию и все пучком. Если с элементарными примерами типа def say_hi ещё можно разобраться. То когда начинается что-то сложнее - это мрак?
Вам нужно разобраться с базовыми основами программирования. Def в руби - это по сути подпрограмма, в ней пишется кусок кода и вызывается в необходимых местах, грубо говоря. Как переменная для данных, только это такая переменная для инструкций, к которой можно обратиться когда нужно.

GG
13.09.2018
15:54:15
Согласна ?
Тоня... есть код V = 10 Add = 3 Sum = V + Add Сделайте функцию в которую передается V и Add. Функция суммирует и возвращает результат

Tony
13.09.2018
15:55:13
то есть проблема не с дефом а со сложнностью кода, или с передачей аргументов в деф?
Да ?? Что такое def я как-то ещё понимаю. Но когда на уроках задания даются- ничего не понятно. Почему именно это туда записано, почему несколько def. Я все надеялась, что это не особо частая вещь. Но Роман делает акцент, что если не умеете применять def - уровень ваш будет как у первоклассников ....

Alex
13.09.2018
15:56:17
для начала попробуйте сделать функцию которая просто будет выполнять описанное выше, а потом попробуйсте вынести из функции объявление переменных и добавить их в def

Alex
13.09.2018
15:57:37
может тогда вопрос в том ради чего делать множество функций ? т.е. вопрос в архитектуре ?

Roman
13.09.2018
15:58:01
Это я понимаю? Видимо, надо просто практикой засыпать себя. В теории все чётко , на практике как баран на новые ворота смотрю
да просто не нужно зацикливаться, пишите просто все сплошным кодом, если увидите повторяющиеся фрагменты, тогда поймете, что можно их вынести в отдельный метод

Ishmael
13.09.2018
15:58:12
Да ?? Что такое def я как-то ещё понимаю. Но когда на уроках задания даются- ничего не понятно. Почему именно это туда записано, почему несколько def. Я все надеялась, что это не особо частая вещь. Но Роман делает акцент, что если не умеете применять def - уровень ваш будет как у первоклассников ....
тогда лучше конкретно по коду вопросы задавать, с каждым понятым примером будет лучшее понимание темы в общем. причем нужно понимать не общий смысл для чего нужен этот код а буквально для чего нужна каждая точка и запятая в коде.

Ishmael
13.09.2018
16:03:44
а как дойдете до классов, тогда все в разы понятней станет
с классами у меня проблемы там вообще все перепутано, абстрактный, миксин, перегруженный, погруженный недогруженный, и еще надо знать когда какой использовать )

Tony
13.09.2018
16:04:54
Тоня... есть код V = 10 Add = 3 Sum = V + Add Сделайте функцию в которую передается V и Add. Функция суммирует и возвращает результат
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️

Roman
13.09.2018
16:05:27
с классами у меня проблемы там вообще все перепутано, абстрактный, миксин, перегруженный, погруженный недогруженный, и еще надо знать когда какой использовать )
В руби нет абстрактных классов, перегружать можно типы, в руби нет типизации, миксины - альтернатива множественному наследованию

Tony
13.09.2018
16:06:03
тогда лучше конкретно по коду вопросы задавать, с каждым понятым примером будет лучшее понимание темы в общем. причем нужно понимать не общий смысл для чего нужен этот код а буквально для чего нужна каждая точка и запятая в коде.
Согласна. Я понимаю, что итак непросто об'яснить что-то человеку, который не понимает. А уж когда нет конкретной задачи- ещё сложнее. Полностью поддерживаю

Roman
13.09.2018
16:06:38
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️
ну вот если sum нужно вызвать несколько раз, тогда и обернуть эту логику в метод будет отличным решением

Tony
13.09.2018
16:07:33
да просто не нужно зацикливаться, пишите просто все сплошным кодом, если увидите повторяющиеся фрагменты, тогда поймете, что можно их вынести в отдельный метод
Вот я тоже не хочу зацикливаться. Просто с каждым уроком этого def все больше. Вот я и напряглась? Тоже надеюсь, что со временем до меня дойдёт

Ishmael
13.09.2018
16:08:13
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️
если у вас нечколько таблица со столбцами которые надо просуммировать , то использовать функцию удобнее. а если там еще будет проверка например не суммировать ячейки в которых значение отрицательное, тогда использование функции еще удобнее

GG
13.09.2018
16:09:21
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️
А теперь просуммируйте 30 раз по вашему шикарному варианту. При условии увеличения V в два раза после каждого суммирования. Первое условие: НЕ использовать ctrl+v или копировать-вставить. Второе: сделайте тоже самое с функцией

Google
Vlad
13.09.2018
16:10:27
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️
А если вам 100 раз посчитать надо будет что-то и в абсолютно разных местах? Функция на то и функция, что она принимает параметры, в вашем случае v и add. И обрабатывает их.

Alex
13.09.2018
16:12:09
Def sum (v, add) X = V+add End Puts sum Наверное так Хотя я конечно хочу по-старинке сделать) V = Add= Sum=v+add Puts sum Шикарно же. Зачем этот def☠️
представь что у тебя есть сложный алгоритм по расчету математических функций по нескольким параметрам с дальнейшей интерполяцией и выводом на основе этого всего 5 разных графиков в 2 и 3 проекциях. Если представить то такая программа написанная тобой лично может занять 10 тысяч строк кода к примеру. Лично тебе будет удобно её писать и может быть удобно исправлять в ней ошибки до определенной поры, но потом возникти ситуация когда ты работаешь над этой программой месяц и уже не помнишь где ты создала переменную 3 недели назад и откуда могла возникнуть какая-нибудь ошибка. Добавь к этому что твоей программой должны будут пользоваться другие разработчики которым очень неудобно будет изучать целых 10 тысяч строк кода ради исправления какой-нибудь мелочи или смены настроек и добавь к этому что такую программу ты можешь писать совместно с группой из 20 человек каждый из которых будет писать в своем стиле непонятном для других. Тогда ты осознаешь истинную причину использования функций и других более трудных способов разработки - это приемы разделить программу на более мелкие кусочки каждую из которых можно разрабатывать отдельно и наличие единых стандартов в разработке программы для всех разработчиков, коим служит функция, а у неё есть аналоги в других старых языках)

Tony
13.09.2018
16:13:46
представь что у тебя есть сложный алгоритм по расчету математических функций по нескольким параметрам с дальнейшей интерполяцией и выводом на основе этого всего 5 разных графиков в 2 и 3 проекциях. Если представить то такая программа написанная тобой лично может занять 10 тысяч строк кода к примеру. Лично тебе будет удобно её писать и может быть удобно исправлять в ней ошибки до определенной поры, но потом возникти ситуация когда ты работаешь над этой программой месяц и уже не помнишь где ты создала переменную 3 недели назад и откуда могла возникнуть какая-нибудь ошибка. Добавь к этому что твоей программой должны будут пользоваться другие разработчики которым очень неудобно будет изучать целых 10 тысяч строк кода ради исправления какой-нибудь мелочи или смены настроек и добавь к этому что такую программу ты можешь писать совместно с группой из 20 человек каждый из которых будет писать в своем стиле непонятном для других. Тогда ты осознаешь истинную причину использования функций и других более трудных способов разработки - это приемы разделить программу на более мелкие кусочки каждую из которых можно разрабатывать отдельно и наличие единых стандартов в разработке программы для всех разработчиков, коим служит функция, а у неё есть аналоги в других старых языках)
Это точно? конечно забуду, где что написано через 1000 строк ? сейчас максимум 10 -15 пишем (на занятиях)

Alex
13.09.2018
16:17:33
??‍♀️не использовать ctrl v? но Ваш намёк понятен- без def жизнь будет непростой
не просто без dev, без классов и модулей в ruby жизнь будет очень не простой не говоря о функциях

Alex
13.09.2018
16:20:03
Мдаааа... Принято?
просто мыслить такими понятиями довольно трудно, особенно если у тебя нет архитектурных знаний о разработке ПО, но это уже просто напросто не для новичков тема

Tony
13.09.2018
16:21:32
Спасибо всем за советы и об'яснения!! Пойду заново смотреть видео Романа. Заново делать все задания. И пороюсь ещё в интернете. Плюс надеюсь на мнение, оставленное выше, что со временем все-таки до меня снизойдёт понимание этого чудовищного def?

Alex
13.09.2018
16:22:19
Спасибо всем за советы и об'яснения!! Пойду заново смотреть видео Романа. Заново делать все задания. И пороюсь ещё в интернете. Плюс надеюсь на мнение, оставленное выше, что со временем все-таки до меня снизойдёт понимание этого чудовищного def?
год, два, начинаешь только осозновать ради чего все. Я сейчас легко могу объяснить ООП в своем понимании, месяца 3-4 назад мое блеение на эту тему бы никого не порадовало на каком-нибудь собеседовании. Так что помимо курсов Романа обязательно читайте разные книги, о чем сам Роман советует в начале курса.

Alex
13.09.2018
16:28:07
?блеяния- это сильно? Ну Вас значит можно поздравить ! Всегда ЗдОрово, если человек идёт вперёд . Это очень мотивирует окружающих
ну вот реально, меня как-то спросили на собеседовании, а для чего в ruby, Java, C# нужны такие вещи как protected, bublic и private и я ничего толком не смог объяснить ради чего это, описать что это не вопрос , но вот зачем и все - мы вам позвоним) а о том что это вы в будущем на уроках узнаете)

Tony
13.09.2018
16:30:22
Dmitrii
13.09.2018
16:38:14
Привет, нужен гуру автотестов. Хочу взять пару уроков, если интересно напишите в ЛС

Ro
13.09.2018
16:47:34
расскажи про ожидания - что такое автотест в твоем понимании?

Viktorija
13.09.2018
17:08:58
Спасибо всем за советы и об'яснения!! Пойду заново смотреть видео Романа. Заново делать все задания. И пороюсь ещё в интернете. Плюс надеюсь на мнение, оставленное выше, что со временем все-таки до меня снизойдёт понимание этого чудовищного def?
Вот еще как новичек новичку могу посоветовать книжку Head First O'Reilly - Макгаврен Дж. - Изучаем Ruby ... о ней уже писали здесь ранее. Забавная и простая в понимании, с картинками и примерами. И как раз для новичков, я так понимаю ее вообще для детей и домохозяек писали :)

Fedor
13.09.2018
17:13:50
Google
Fedor
13.09.2018
17:14:23
Тоесть после слова def мы пишем имя метода и список параметров, которые он принимает

И все

Alex
13.09.2018
17:14:40
Там главное в этой книге продвигается "кейс" в чем выгода использования, а ни просто как конструкция языка

примеры хоть и детские но весьма прикладные

Fedor
13.09.2018
17:20:34
А это часть синтаксиса языка, без нее просто никае

Alex
13.09.2018
17:22:43
Ну выгода использования может быть у классов и шаблонов
ну вот выше девушка совершенно не понимала ради чего нужна функция. Если взять человека ну бабушку мою или маму и дать им изучать программирование у них же и в мысле не возникет идеи что программа создается не ради выполнения одной функции, так и у неё возникло не понимание для чего этот синтаксис когда "я могу и так не городя такие сложности сделать красоту"

а там в этой почти детской книге ну просто на пальцах описано ради чего "тебе ученику" нужны функции

Admin
ERROR: S client not available

Tony
13.09.2018
17:30:44
А это часть синтаксиса языка, без нее просто никае
??‍♀️что без не никак- это я уже поняла ? пока мне это не нравится прям скажем, но видимо, со временем, поменяю мнение ?

Fedor
13.09.2018
17:31:25
Как только перейдете от простых скриптов к решению реальных задач

Пока в ней нет надобности, действительно применять проблематично

Tony
13.09.2018
17:31:52
а там в этой почти детской книге ну просто на пальцах описано ради чего "тебе ученику" нужны функции
??????на пальцах мне и надо!!!!! Завтра приобрету книжку! Спасибо Вам и Вике за совет?

Fedor
13.09.2018
17:31:54
Потом так же с классами будет

Tony
13.09.2018
17:34:56
Пока в ней нет надобности, действительно применять проблематично
На уроках Роман даёт задания. И пометку- применить def? и так стало неудобно, что не понимаю я эту функцию, что пришлось и Романа дёргать и у вас совета спрашивать??

Fedor
13.09.2018
17:38:10
попробуйте придумать себе задачу где надо сделать много сложных действий и сразу станет удобно

Tony
13.09.2018
17:41:11
попробуйте придумать себе задачу где надо сделать много сложных действий и сразу станет удобно
?ага. Очень удобно)! Все, скачиваю книжку рекомендованную. Буду читать. И надеюсь, на меня снизойдёт понимание? Мне уже сегодня скидывали пример применения. Приводили аргументы. Я понимаю, что очень надо Ее понять. Просто у каждого своя точка понимания так сказать. Ищу свою ?

Fedor
13.09.2018
17:43:03
person = {} person.merge( personal_data: { name: 'some name', last_name: 'other name', middle_name: 'more names', age: 12, gender: 'male', citizenship: 'Russia' } ) person.merge( bank_account: { card_number: '123'. bank_name: 'some bank', bik: '123123', inn: '1231232' } ) person.merge( dogs: [ dog1: { name: 'dog1', gender: 'male', breed: 'dog', age: 12 }, dog2: { name: 'dog2', gender: 'female', breed: 'dog', age: 13 } ] ) puts person.inspect

Google
Fedor
13.09.2018
17:43:13
вам удобно читать этот кусок кода?

Vlad
13.09.2018
17:54:20
Напишу свой пример. Мой первый опыт программирования на руби - это написание бота для автоматизации действий в онлайн игре для мобильного телефона. Код главного файла https://github.com/vladlaptev/hetool-hackex-bot/blob/master/lib/mylib.rb Так вот суть бота сводилась к тому, что у меня было меню, в котором я выбирал действия. Пример действий: 1. Зайти в игру и посмотреть список игроков, которых можно взломать. 2. Зайти в игру и взломать игрока с определенным IP адресом. Суть в том, что без использования функций просто невозможно сделать код, который бы принимал какие-то параметры и обрабатывал их. Например я хотел бы чтобы бот зашел в игру и взломал игрока с определенным IP. Но я эти IP не знаю, я получу их при вызове функции под номером 1. А дальше что с ними делать? Не лезть же в код, и не вписывать вручную? Поэтому у нас есть функция, например def hack_player(ip) end Вот ей мы и передаем полученные параметры в любое время. А она взламывает нам игрока в игре и говорит мол "игрок 127.0.0.1 взломан") Без функций - никуда.

Пардон за простыню текста)

Oleg
13.09.2018
17:59:24
person = {} person.merge( personal_data: { name: 'some name', last_name: 'other name', middle_name: 'more names', age: 12, gender: 'male', citizenship: 'Russia' } ) person.merge( bank_account: { card_number: '123'. bank_name: 'some bank', bik: '123123', inn: '1231232' } ) person.merge( dogs: [ dog1: { name: 'dog1', gender: 'male', breed: 'dog', age: 12 }, dog2: { name: 'dog2', gender: 'female', breed: 'dog', age: 13 } ] ) puts person.inspect
я б сдалал так: person = {} person[:personal_data] = { name: 'some name', last_name: 'other name', middle_name: 'more names', age: 12, gender: 'male', citizenship: 'Russia' } person[:bank_account] = { card_number: '123', bank_name: 'some bank', bik: '123123', inn: '1231232' } person[:dogs] = [ dog1: { name: 'dog1', gender: 'male', breed: 'dog', age: 12 }, dog2: { name: 'dog2', gender: 'female', breed: 'dog', age: 13 } ] puts person.inspect

Fedor
13.09.2018
18:01:17
я бы предложил сделать так: person = {} puts_personal_data_to(person) puts_bank_account_to(person) puts_dogs_to(person) puts person.inspect

но для этого нужен def )

зато код сразу описывает сам себя

Oleg
13.09.2018
18:02:42
здесь согласен. Так намного удобнее читать код

Fedor
13.09.2018
18:06:16
вот одна из причин, берем один логический кусок, например добавление персональных данных и заворачиваем в метод def puts_personal_data_to(person) person[:personal_data] = { name: 'some name', last_name: 'other name', middle_name: 'more names', age: 12, gender: 'male', citizenship: 'Russia' } end

и вот так получаем очень красивый основной метод

сам по себе каждый метод в три раза проще чем один гигантский

evgeny
13.09.2018
18:07:22
Напишу свой пример. Мой первый опыт программирования на руби - это написание бота для автоматизации действий в онлайн игре для мобильного телефона. Код главного файла https://github.com/vladlaptev/hetool-hackex-bot/blob/master/lib/mylib.rb Так вот суть бота сводилась к тому, что у меня было меню, в котором я выбирал действия. Пример действий: 1. Зайти в игру и посмотреть список игроков, которых можно взломать. 2. Зайти в игру и взломать игрока с определенным IP адресом. Суть в том, что без использования функций просто невозможно сделать код, который бы принимал какие-то параметры и обрабатывал их. Например я хотел бы чтобы бот зашел в игру и взломал игрока с определенным IP. Но я эти IP не знаю, я получу их при вызове функции под номером 1. А дальше что с ними делать? Не лезть же в код, и не вписывать вручную? Поэтому у нас есть функция, например def hack_player(ip) end Вот ей мы и передаем полученные параметры в любое время. А она взламывает нам игрока в игре и говорит мол "игрок 127.0.0.1 взломан") Без функций - никуда.
а это вообще легально?)

Tony
13.09.2018
18:07:43
Напишу свой пример. Мой первый опыт программирования на руби - это написание бота для автоматизации действий в онлайн игре для мобильного телефона. Код главного файла https://github.com/vladlaptev/hetool-hackex-bot/blob/master/lib/mylib.rb Так вот суть бота сводилась к тому, что у меня было меню, в котором я выбирал действия. Пример действий: 1. Зайти в игру и посмотреть список игроков, которых можно взломать. 2. Зайти в игру и взломать игрока с определенным IP адресом. Суть в том, что без использования функций просто невозможно сделать код, который бы принимал какие-то параметры и обрабатывал их. Например я хотел бы чтобы бот зашел в игру и взломал игрока с определенным IP. Но я эти IP не знаю, я получу их при вызове функции под номером 1. А дальше что с ними делать? Не лезть же в код, и не вписывать вручную? Поэтому у нас есть функция, например def hack_player(ip) end Вот ей мы и передаем полученные параметры в любое время. А она взламывает нам игрока в игре и говорит мол "игрок 127.0.0.1 взломан") Без функций - никуда.
Ойййййй ??‍♀️ да Вы что!!! Я даже половины не понимаю!! Мне ещё до этого как до луны! А Вы хакер прям, первая программа и сразу взлом пользователя???‍?

Vlad
13.09.2018
18:10:08
Нет, это не первая программа, просто первая на руби. Я вам не про программу, а про то, что большинство вещей без функций написать просто невозможно, а если и возможно, то это будет неудобным, нечитаемым, громоздким и так далее.

Tony
13.09.2018
18:11:05
сам по себе каждый метод в три раза проще чем один гигантский
Это точно!!! Конечно удобнее всем, когда не простынь разворачиваешь, а все так компактно, понятно выглядит. Обзавидовалась вам? точнее я в шоке, что вот есть люди, которые умеют такое создавать, писАть!

Fedor
13.09.2018
18:12:20
а это вообще легально?)
я первыми прогами на руби парсил сайты для совместных закупок, намучался с обходом блокировок )

Vlad
13.09.2018
18:20:30
Сейчас 99% сайтов парсится без всяких проблем. А любые проблемы с блокировками решаются масштабированием.

Aleksej
13.09.2018
18:24:12
Кстати, на чём парсеры писали? На руби ничего лучше nokogiri ещё не изобрели?

Vlad
13.09.2018
18:37:21
Кстати, на чём парсеры писали? На руби ничего лучше nokogiri ещё не изобрели?
Ну, а чем nokogiri плох? Мне вполне нравится, ибо получить данные - лишь малая часть парсинга, если уж говорить о том. У меня вся работа это парсинг, но лишь 10% времени занимает получение данных, 90% времени обработка и работа с масштабированием парсинга, обработкой исключений, чтобы воркеры с парсером работали, например миллион раз в сутки. В свое время помогла вот эта шпаргалка тулзов по парсингу https://github.com/lorien/awesome-web-scraping/blob/master/ruby.md

Страница 829 из 921