2017-02-09 2 views
0

В Groovy документации, он упоминает сокращенную запись для доступа к свойствам только по имени, например, obj.getFoo() будет эквивалентно obj.foo и obj.setFoo(val) будет эквивалентно obj.foo = val. Похоже, что это также применимо к методам с префиксом «есть». Например, с объектом File вместо obj.isFile() вы можете сделать obj.file, и он будет семантически одинаковым. Означает ли это сокращенное обозначение, где вы можете лишить глагол и не иметь круглых скобок для любых других методов Groovy?Groovy сокращенная доступа имя вскрышных глаголом и удаления круглых скобок

ответ

1

Я бы не думал об этом так же, как удаление глагола и круглых скобок. Это больше похоже на то, что вы напрямую обращаетесь к свойству, как на языках Ruby и Python. Это просто Groovy, удобный и отличный от Java. Существует множество аналогичных удобств на языке, таких как перегрузка операторов по умолчанию для коллекций (например, «< <» и +) и «сборные спреды» с помощью *.

+0

Да, я знаком с Руби и Python свойств. Я должен уточнить - я не думаю, что в документации Groovy упоминается свойство синтаксического сахара, работающего со способами, отличными от getter/seters. Поэтому я был удивлен, увидев, что он работает для isFile(). В принципе, мне было интересно, что другие типы сигнатур свойств синтаксического сахара применимы к другим, которые «получают», «устанавливают» и «есть». – solstice333

+1

Причина, по которой они шли с «is», заключается в том, что это идиома Java. Как правило, с булевыми полями геттер имеет префикс «is», а не «get». Еще одна тонкость Groovy! – rockympls

1

Так что это действительно не так, как доступ к собственности напрямую или удаление глагола. Это синтаксический сахар.

В Groovy:

println bob.name 

Является эквивалентом в Java, чтобы:

System.out.println(bob.getName()); 

В Groovy:

bob.name = "Bob" 

Является эквивалентом в Java, чтобы:

bob.setName("Bob"); 

Также, в Groovy, реализации по умолчанию предоставляются без какого-либо кода. Поэтому, когда вы можете генерировать утилизаторы и сеттеры по умолчанию в Java, Groovy по умолчанию компилируется в ваш класс.

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

На сайте Groovy Language имеется большой объем информации. Вот только одно место, где это объясняется, но более подробную информацию можно найти на сайте Groovy Language.

http://groovy-lang.org/style-guide.html

+0

О, право. Да, я понимаю свойства. Чтобы уточнить, я был более удивлен, увидев, что этот синтаксический сахар работает для методов с префиксом «is», таких как isFile(), и поэтому мне было интересно, насколько сильно этот синтаксический сахар покрывает отдельно от свойств. – solstice333

Смежные вопросы