![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
здравствуйте, читаю книгу по ActionScript, но в ней некоторые моменты непонятны, помогите, пожалуйста, разобраться... вот пример: есть класс TestCode:
package { public class TestCode { public var _count:uint; public function TestCode() { _count = 0; } public function getCount():uint { return _count; } public function setCount(value:uint):void { if (value < 100) { _count = value; } else { throw Error } } } } ![]() |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 85
|
__________________
www.MegaLuckyPlay.com |
|
|||||
|
nelco, функции (всегда!) вызываются со скобками ()
без скобок возможно обращение к переменным, константам, и нативным геттерам/сеттерам as3 То, что используется у вас - простые методы, не нативные геттеры и сеттеры as3. Чтобы все было "по феншую" можно переписать код так: public function get count():uint { return _count; } public function set count(value:uint):void { if (value < 100) { _count = value; } else { throw new Error("ошибка"); // не забываем про директиву new } } |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Вопрос в догонку: а нафига вообще были придуманы эти get и set?
Ведь, имхо, удобнее сделать все обычными функциями. И понятнее. А тут надо переключаться на понимание того, что это гет-хренотень, и что её надо как переменную использовать. В чем выигрыш то? |
|
|||||
|
|
|
|||||
|
Цитата:
Лично мне нравится. Да и многим тоже. А для тех, кому не нравится, всегда есть выбор, использовать простые методы, или нативные геттеры/сеттеры. И то и то вполне допустимо, и плохим тоном не является. |
|
|||||
|
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
спасибо за ответы, всё стало понятно, значит это не были ещё геттер и сеттер... теперь переписал код в такой вид
package { public class TestCode { public var _count:uint; public function TestCode() { _count = 0; } public function get сount():uint { return _count; } public function set сount(value:uint):void { if (value < 100) { _count = value; } else { throw Error } } } } |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
nelco, ну вот как выше было отмечено, и насколько я понимаю концепцию геттеров и сеттеров, как раз смысл в том и заключается, чтобы "превратить функцию в переменную".
Поэтому, скобки вам не нужны, вы просто присваиваете значение, "словно это свойство". Хотя, я могу ошибаться, подождем ответа профи. |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Вам уже ответили выше, что это особенность языка.Конечно get/set методы являются функциями, но обращение к ним происходит как к переменным.Не стоит пытаться понять почему так, а лучше просто запомнить, что с get/set методами нужно работать именно так или же создавать свои методы, как Вы и делали только уже не забывайте про скобки getCount(), так как это не get метод, а Ваш пользовательский и не важно то что Вы в нем написали get.
|
|
|||||
|
Цитата:
Цитата:
Например если у вас есть функция getCount() следующего вида: То обращаясь к этой функции по-разному, мы получим разный результат: в случае с геттерами ссылки на функцию нам не дают, и вызов выглядит как обращение к самой переменной. Рассматривайте это как прослойку между инкапсулированными данными и внешним миром. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|