Size: a a a

2020 January 10

u

unkmas in pro.ruby
Чот повторяешься, разных накидал бы
источник

AI

Alex Ilizarov in pro.ruby
за такое группу и побанить могут
источник
2020 January 11

AI

Alex Ilizarov in pro.ruby
@lbvf50 тут насрали
источник

VK

Vadim Kuzmin in pro.ruby
Ребят, вот такое вопрос с собеседования.
В языке Ruby есть три модификатора доступа к методам: public, private и protected.
С private все понятно. Но вот чем отличается private и protected никак не разберусь.
Пока пришел к выводу что protected методы  можно вызывать явно через  self  в отличие от private.   Но вся ли это разница и правильные ли мои выводы?

В среде разработчиков на языке Ruby весьма не однозначное отношение к этим модификаторам. Кто-то прям "топит" за protected, кто-то говорит что это устаревший и изначально лишний модификатор в языке, а кому-то вообще без разницы как скрывать методы.
источник

AI

Alex Ilizarov in pro.ruby
Vadim Kuzmin
Ребят, вот такое вопрос с собеседования.
В языке Ruby есть три модификатора доступа к методам: public, private и protected.
С private все понятно. Но вот чем отличается private и protected никак не разберусь.
Пока пришел к выводу что protected методы  можно вызывать явно через  self  в отличие от private.   Но вся ли это разница и правильные ли мои выводы?

В среде разработчиков на языке Ruby весьма не однозначное отношение к этим модификаторам. Кто-то прям "топит" за protected, кто-то говорит что это устаревший и изначально лишний модификатор в языке, а кому-то вообще без разницы как скрывать методы.
protected позволяет обращаться к чему то в дочерних классах, private только в рамках своего
источник

AI

Alex Ilizarov in pro.ruby
Топит/не топит больше вопрос ООП парадигмы, там жаркие баталии.
источник

VK

Vadim Kuzmin in pro.ruby
Alex Ilizarov
protected позволяет обращаться к чему то в дочерних классах, private только в рамках своего
вы имете ввиду что только наследники класса с методом protected могут вызывать этот метод?

Так с private все точно так же
источник

DB

Dmitry Batracov in pro.ruby
Vadim Kuzmin
вы имете ввиду что только наследники класса с методом protected могут вызывать этот метод?

Так с private все точно так же
В руби просто такая реализация
источник

DB

Dmitry Batracov in pro.ruby
Но вообще, @Fedcomp прав
источник

DB

Dmitry Batracov in pro.ruby
Посмотри реализацию в джаве или плюсах
источник

RI

Rustam Ibragimov in pro.ruby
в каноничном ооп - к прайвэйт из наследника нельзя, к протектед - можно

в руби - можно. но даже еще больше - в 2.7.0 у прайвэйт поведение стало как с протектед, тобиш  на сэлф можешь вызвать, что  добавляет абсурда реализации ооп в руби :)))
источник

RI

Rustam Ibragimov in pro.ruby
в руби так сделано (канон подрезали). но ничего, живем, юзаем, любим :)
источник

YN

Yevhen Nakonechnyi in pro.ruby
что такое канончное ооп?
источник

AI

Alex Ilizarov in pro.ruby
Vadim Kuzmin
вы имете ввиду что только наследники класса с методом protected могут вызывать этот метод?

Так с private все точно так же
нет наследники класса не должны иметь доступа к private объявленному вне класса
источник

AA

Andrey Andreev in pro.ruby
Vadim Kuzmin
Ребят, вот такое вопрос с собеседования.
В языке Ruby есть три модификатора доступа к методам: public, private и protected.
С private все понятно. Но вот чем отличается private и protected никак не разберусь.
Пока пришел к выводу что protected методы  можно вызывать явно через  self  в отличие от private.   Но вся ли это разница и правильные ли мои выводы?

В среде разработчиков на языке Ruby весьма не однозначное отношение к этим модификаторам. Кто-то прям "топит" за protected, кто-то говорит что это устаревший и изначально лишний модификатор в языке, а кому-то вообще без разницы как скрывать методы.
Не разу не видел использования протектед
источник

Т

Тёмыч in pro.ruby
та и приватные методы можно дергать на самом деле
источник

Т

Тёмыч in pro.ruby
и константы менять
источник

Т

Тёмыч in pro.ruby
всегда кекаю когда говорят что Руби самый ООП язык в мире)
источник

VK

Vasya Kuzmik in pro.ruby
На самом деле в руби private и protected работают лишь через соглашение между разработчиками
источник

VK

Vadim Kuzmin in pro.ruby
Alex Ilizarov
нет наследники класса не должны иметь доступа к private объявленному вне класса
хмм
может быть я неправильно вас понял,но в Ruby и private и protected методы любые наследники могут использовать

ruby
class A
 private
 def private
   'I am private of A'
 end

 protected
 def protected
   'I am protected of A'
 end
end


ruby
class B < A
 def call_private_of_A
   private
 end

 def call_protected_of_A
   protected
 end
end

> b = B.new => #<B:0x00cdcaa8>
> b.call_private_of_A => "I am private of A"
> b.call_protected_of_A => "I am protected of A"
источник