Bezpośredni dostęp do zmiennej instancji a Korzystanie z metody accessor
Czy ktoś może wyjaśnić różnicę między uzyskaniem dostępu do atrybutu instancji przez self.attribute
i przez @attribute
?
78
2 answers
self.attribute
wywołuje metodę attribute
.self.attribute = value
wywołuje metodę {[3] } z argumentem value
.@attribute
and @attribute = value
get / set the value of the instance variable @attribute
.
Więc zasadniczo są to dwie zupełnie różne rzeczy.
Jeśli jednak wywołasz attr_accessor :attribute
definiuje metodę attribute
zwracającą @attribute
, a metodę attribute=(value)
ustawiającą @attribute = value
. Więc w takim przypadku nie ma różnicy.
98
Author: sepp2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-03 06:34:53
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-03 06:34:53
"bezpośredni dostęp do zmiennej instancji jest około dwa razy szybszy niż dostęp do niej metodami accessor"
Zobacz: http://greyblake.com/blog/2012/09/02/ruby-perfomance-tricks/
2
Author: meso_2600,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-12 09:16:18
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-12 09:16:18