Как реализовать геттер в smalltalk pharo - PullRequest
0 голосов
/ 10 января 2020

У меня есть класс Person с моими setters и getters следующим образом:

Object subclass: #Person
instanceVariableName: 'name document'
classVariableName ' '
package: 'foo'

name
^name

name: anObject
name:= anObject

document
^document

document: anObject
document:= anObject

Затем я создаю экземпляр моего класса в моих TestPerson

setUp
p1:= Person name:'Alice' document:='12345'

Так здесь я не понимаю, как я могу реализовать свой геттер для сравнения, если меня действительно зовут Алиса. Например, в Java это будет так:

p1.getName().equals("Alice");

Ответы [ 2 ]

9 голосов
/ 10 января 2020
p1 name = 'Alice'

Вам действительно нужно прочитать книгу на Smalltalk, вам не хватает основ, и «обучение переполнением стека» не кажется лучшим способом.

Есть MOO C: http://mooc.pharo.org/.
Здесь много бесплатных книг: http://books.pharo.org
Здесь вы есть несколько бесплатных общих книг: http://stephane.ducasse.free.fr/FreeBooks.html
И здесь вы можете найти более общую документацию: http://pharo.org/documentation (вы можете посмотреть некоторые вводные скринкасты там).

7 голосов
/ 10 января 2020

Я хотел объяснить, почему совет Эстебана важен, и почему он особенно хороший совет в случае Smalltalk. Многие другие языки используют очень базовые c концепции программирования, которые уже знает каждый опытный программист, но они утоплены в океане специального синтаксиса, крайних случаев, исключений, множества уровней часто несовместимых или несвязанных подробных правил проектирования произвольных языков. Поэтому, когда вы изучаете эти языки, часто возникает проблема «как мне сделать X (простая концепция, которую вы уже знаете) на языке Y». Это справедливо, если спросить «как мне сделать X на языке Y» (как вы только что сделали). Это также затрудняет использование доступных книг или документации по этому языку, потому что они либо попытаются научить вас X снова (но вы уже знаете X, вы просто хотите знать, как это сделать на Y!) или они будут длинным списком специальных советов и уловок, освещающих все особые случаи и особенности языка Y (и они могут на самом деле не охватывать ваш конкретный вопрос, или, если они это сделают, вы не легко найдете его в материалах). Итак, Stackoverflow - отличный способ задать такие вопросы «как мне сделать X в Y» для таких языков.

Smalltalk отличается. Потому что Smalltalk построен ортогонально на очень маленьком, простом и последовательном дизайне концепций и синтаксиса. Таким образом, благодаря Smalltalk, вы можете позволить себе время, чтобы прочитать книгу (она короткая: синтаксис отлично вписывается в открытку, а концепции одинаково малы и просты). Книга охватит большинство и все особые случаи, потому что ... В большинстве случаев таких случаев нет. Ваши знания будут применяться повсеместно. Он будет работать горизонтально (во всех частях системы) и вертикально (на самом высоком и самом низком уровнях абстракции в системе).

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

PS: Я не подразумеваю, что это делает Stackoverflow бесполезным для Smalltalk, просто мы не увидим так много вопросов в форме «как я делаю X в Y» по сравнению с другими языками.

...