@oop_ru

Страница 336 из 785
sss3 ?
17.09.2017
19:10:29
Имутабельность можно и в ооп

illiatshurotshka❄️
17.09.2017
19:10:34
ну да

sss3 ?
17.09.2017
19:10:39
Ооп от этого не станет фп

Yan
17.09.2017
19:11:18
А как было бы "тру функционально"?
Я думаю, как коллбэки независимых функций

Google
illiatshurotshka❄️
17.09.2017
19:11:52
Я думаю, как коллбэки независимых функций
а чем тебе методы не нравятся?

Yan
17.09.2017
19:12:35
а чем тебе методы не нравятся?
Ну это уже не функционально, а по оопшному)

illiatshurotshka❄️
17.09.2017
19:12:43
чем функция принадлежащая тайпклассу отличается от метода?

sss3 ?
17.09.2017
19:13:05
я бы сделал предположение что filter, map и пр. создают новые стримы
Учитывая что все внутри не имеет значения, пока нет терминируещего метода (или как они там называются) все внутри можно схлопнуть в 1 функцию

Yan
17.09.2017
19:13:09
почему?
Уже выше писал, потому что обращаются к объекту

illiatshurotshka❄️
17.09.2017
19:13:20
кто обращается

Yan
17.09.2017
19:13:56
кто обращается
Вызываются методы объекта

illiatshurotshka❄️
17.09.2017
19:14:04
да

что это меняет

Yan
17.09.2017
19:14:53
Ну так как тогда это может быть функционально, когда ты обращаешься к объекту, хранящему состояние, определенное классом, и не одним. Это ж не результат нескольких отдельных функций

illiatshurotshka❄️
17.09.2017
19:15:36
состояние не меняется

поэтому я не могу придумать разницу между подобным методом и любым методом тайпкласса, который берет сам параметрезованный тип в аргумент

Google
Sergei
17.09.2017
19:16:37
я пытаюсь тебе доказать что функции в java не first-class
public Predicate<String> notEmptySring() { return string -> !string.isEmpty(); }

illiatshurotshka❄️
17.09.2017
19:17:04
public Predicate<String> notEmptySring() { return string -> !string.isEmpty(); }
это лишь один вид функций из Java

Sergei
17.09.2017
19:17:33
illiatshurotshka❄️
17.09.2017
19:17:55
которые принадлежат объектам

Sergei
17.09.2017
19:19:29
которые принадлежат объектам
public class MainClass { private Predicate<String> emptyString = string -> string.isEmpty(); }

illiatshurotshka❄️
17.09.2017
19:20:43
https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

держи

Sergei
17.09.2017
19:21:54
https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
и что там, что то о функциях?

illiatshurotshka❄️
17.09.2017
19:22:42
да

Sergei
17.09.2017
19:23:00
и что там, что то о функциях?
или ты имеешь в виду под функцией метод?

illiatshurotshka❄️
17.09.2017
19:23:53
ты пропозицируешь что эти термины не синонимичны в java?

Sergei
17.09.2017
19:24:25
Evgeniy
17.09.2017
19:25:03
в java 8 же добавили анонимные функции

насколько я помню

а раньше там всегда было через класс и метод

который объявлялся

illiatshurotshka❄️
17.09.2017
19:26:17
нет, метод и функция это разные вещи
(1) In programming, a named section of a program that performs a specific task.

Sergei
17.09.2017
19:26:31
Как по мне - статический метод не то чтобы сильно отличался от "тру-функции".

illiatshurotshka❄️
17.09.2017
19:26:42
где это метод не подходит этому определению.

Google
Yan
17.09.2017
19:27:18
Как по мне - статический метод не то чтобы сильно отличался от "тру-функции".
Обращаться к нему всё равно через имя класса, он принадлежит классу

Sergei
17.09.2017
19:28:31
в java 8 же добавили анонимные функции
Ну там и сейчас так, там где можно было передавать анонимный класс который создавался на месте вызова метода someObject.do(new Action { //code //};) там просто добавили возможность писать литерал. Что то вроде того как пишется стринг, а там вызывается new String("") за кулисами. Ну или как в груви например вместо того чтобы писать new ArrayList добавили просто литерал листа как квадратные скобки List list = [];

Sergei
17.09.2017
19:29:15
illiatshurotshka❄️
17.09.2017
19:29:25
по какому смыслу?

Sergei
17.09.2017
19:30:05
по какому смыслу?
функция сама по себе, метод это метод воздействия на обьект в котором находится данный метод

Sergei
17.09.2017
19:32:09
можно источник?
ну из названий и так же понятно, может где то и описано в какой то книге. Важно их отличать, а том потом делают какие то утил классы (потому что без обьявления класса не компилятся функции (которые на самом деле методы)) и потом в этом классе может быть сотни функций. А вот метод это уже другое дело.

illiatshurotshka❄️
17.09.2017
19:33:11
ну из названий и так же понятно, может где то и описано в какой то книге. Важно их отличать, а том потом делают какие то утил классы (потому что без обьявления класса не компилятся функции (которые на самом деле методы)) и потом в этом классе может быть сотни функций. А вот метод это уже другое дело.
ничего не понятно. я нигде не могу найти подверждение такой терминологии. либо здесь применяются какие-либо узкие интерпретации этих терминов созданные java разработчиками, либо это просто выдумка

Sergei
17.09.2017
19:33:39
Обращаться к нему всё равно через имя класса, он принадлежит классу
В принципе даже это можно обойти, обращаясь без имени класса.

Yan
17.09.2017
19:34:29
В принципе даже это можно обойти, обращаясь без имени класса.
Как? Я просто на джаве не пишу, там так можно?

Sergei
17.09.2017
19:34:31
Отличается, если имеет сайд эффект
Вот как по мне - это пожалуй самое существенное для functional programming.

Sergei
17.09.2017
19:36:43
ничего не понятно. я нигде не могу найти подверждение такой терминологии. либо здесь применяются какие-либо узкие интерпретации этих терминов созданные java разработчиками, либо это просто выдумка
Это я придумал такую терминологию, но по моему это очевидно из названий, важна семантика, вот в js если мы в обьект добавим функцию то она станет методом по смыслу, т.к. она уже часть этого класса и неразрывно связання с ним.

Sergei
17.09.2017
19:37:41
Как? Я просто на джаве не пишу, там так можно?
"static import" - можно импортировать из package статические методы класса, поле чего они добавляются к текущему пространству имен. Больше похоже на syntactic sugar, чем на что-то полезное. import static java.lang.Math.*; class Demo2{ public static void main(String args[]) { double var1= sqrt(5.0); double var2= tan(30); } }

illiatshurotshka❄️
17.09.2017
19:38:28
функция?
и где хранятся ее методы?

Google
illiatshurotshka❄️
17.09.2017
19:38:42
в прототипе.

прототип это хешмап

в хешмап мы вроде как ложим функции по твоему определению функций

Sergei
17.09.2017
19:39:27
ну да, магии нет

Dezmunt
17.09.2017
19:39:33
Ребят, начитался кучу статей и мнений по-поводу проведенной черты между абстракцией и инкапсуляцией. Только по-понятному плс)

Sergei
17.09.2017
19:39:36
и где хранятся ее методы?
метод один, и это есть как бы сама функция

Sergei
17.09.2017
19:43:49
что?
Ну что такое обьект, по вроде бы общепринятому определению, это структура данных ( сущность более подходящее определение) обладающая состоянием и поведением, в основном обьекты представляют собой абстракции реального мира для упрощения решения задач человеком в человеческих терминах и логике мышления.

функция тоже может обладать состоянием, поведение это сама функция, вот и обьект

andretshurotshka?❄️кде
17.09.2017
19:45:18
Какое состояние у функции

лол

Sergei
17.09.2017
19:49:32
"lol no generics" (но это про Golang)

illiatshurotshka❄️
17.09.2017
19:49:35
и я вообще не понял к чему это

Sergei
17.09.2017
19:50:51
мы вроде про js
function counter() { let count = 0; return function() { count = count + 1; return count; } } c1 = counter(); c2 = counter(); console.log(c1()); //1 console.log(c1()); //2 console.log(c2()); //1 Ну например я создаю конструктор функций (обьектов) вызываю этот конструктор, он возвращает мне экземпляры функции, каждый экземпляр функции(обьекта) независим один от другого

Google
Sergei
17.09.2017
19:51:38
как без дженериков??

andretshurotshka?❄️кде
17.09.2017
19:52:15
как без дженериков??
вот вам и тру ООП))

illiatshurotshka❄️
17.09.2017
19:52:37
вот вам и тру ООП))
экзистенциальные типы это зараза фп

Sergei
17.09.2017
19:54:05
объекты в жс вообще не так делаются
как делаются обьекты: берётся структура типа таблица т.е. ключ значение, и набивается стрингами и функциями, так же можно добавлять и поля, только в этом случае ключем так же будет строка, а значением уже другой тип.

illiatshurotshka❄️
17.09.2017
19:54:52
мне кажется тебе стоит почитать про prototype based programming

Sergei
17.09.2017
19:55:36
вот вам и тру ООП))
Как говорил Егор, если ооп это обьекты это сущности из реального мира, то отсутствие дженериков как бы противоречит этому

illiatshurotshka❄️
17.09.2017
19:56:39
я на этом закончу потому что весь разговор основан на выдуманной терминологии которая была поставлена вместо правдивой

Sergei
17.09.2017
19:56:49
мне кажется тебе стоит почитать про prototype based programming
я знаю что такое prototype based programming, лучше всего его понять не по js там где скрыты некоторые вещи сахаром вроде new и так далее, а в lua там всё как бы не доделано, но видно это хорошо

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

Yan
17.09.2017
20:05:31
Почему?
Потому что функция не объект

Sergey
17.09.2017
20:06:08
Потому что функция не объект
ты можешь повторять это сколь угодно долго, от этого твое утверждение истенным не станет.

все зависит от контекста. В языках типа js-а функция это объект.

Sergey
17.09.2017
20:07:01
да и в Lua насколько я помню

illiatshurotshka❄️
17.09.2017
20:07:09
function meme () { this.a = 1 }

new meme ()

Sergei
17.09.2017
20:08:51
да и в Lua насколько я помню
ну там есть отдельный тип как функция, но сути особо не меняет, вообще определение обьекта, это состояние и поведение, состояние может быть, а поведение это как бы один метод, (функция)

Страница 336 из 785