В Groovy документации, он упоминает сокращенную запись для доступа к свойствам только по имени, например, obj.getFoo()
будет эквивалентно obj.foo
и obj.setFoo(val)
будет эквивалентно obj.foo = val
. Похоже, что это также применимо к методам с префиксом «есть». Например, с объектом File
вместо obj.isFile()
вы можете сделать obj.file
, и он будет семантически одинаковым. Означает ли это сокращенное обозначение, где вы можете лишить глагол и не иметь круглых скобок для любых других методов Groovy?Groovy сокращенная доступа имя вскрышных глаголом и удаления круглых скобок
ответ
Я бы не думал об этом так же, как удаление глагола и круглых скобок. Это больше похоже на то, что вы напрямую обращаетесь к свойству, как на языках Ruby и Python. Это просто Groovy, удобный и отличный от Java. Существует множество аналогичных удобств на языке, таких как перегрузка операторов по умолчанию для коллекций (например, «< <» и +) и «сборные спреды» с помощью *.
Так что это действительно не так, как доступ к собственности напрямую или удаление глагола. Это синтаксический сахар.
В 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.
О, право. Да, я понимаю свойства. Чтобы уточнить, я был более удивлен, увидев, что этот синтаксический сахар работает для методов с префиксом «is», таких как isFile(), и поэтому мне было интересно, насколько сильно этот синтаксический сахар покрывает отдельно от свойств. – solstice333
- 1. Regex для удаления круглых скобок
- 2. вызова Groovy функции Omiting круглых скобок
- 3. Как получить содержимое круглых скобок, но не самих круглых скобок
- 4. ассоциативность круглых скобок
- 5. Использование «автономных круглых скобок»
- 6. Форматирование круглых скобок TypeScript
- 7. '*' вокруг круглых скобок: указатели
- 8. Фрагмент Sublime Text Editor для удаления круглых скобок
- 9. регулярное выражение для удаления круглых скобок из строки
- 10. Алгоритм для удаления избыточных круглых скобок из логического выражения
- 11. Инструмент Python для балансировки круглых скобок, котировок и скобок
- 12. Boost.Tokenizer для кавычек и круглых скобок
- 13. Поиск круглых скобок через ElasticSearch
- 14. Вызов метода без круглых скобок
- 15. Логический оператор вне круглых скобок
- 16. Python для вложенных круглых скобок
- 17. C++ круглых скобок вокруг строки
- 18. оконные скобки круглых скобок области
- 19. разбор круглых скобок из строки
- 20. Получить текст внутри круглых скобок
- 21. Сложность понимания дополнительных круглых скобок
- 22. числа Нахождение внутри круглых скобок
- 23. Удалить содержимое внутри круглых скобок
- 24. Regex, чтобы избежать круглых скобок
- 25. Проверка сбалансированных круглых скобок - nullPointerException
- 26. PHP: preg_match_all избежать круглых скобок
- 27. RegEx для удаления одиночной кавычки, круглых скобок или квадратной скобки с начала и конца строки
- 28. вызовите функцию Lua, просто записав ее имя (без круглых скобок)
- 29. Нечетное поведение круглых скобок в объективе-c
- 30. Соответствие одного слова внутри необязательных круглых скобок
Да, я знаком с Руби и Python свойств. Я должен уточнить - я не думаю, что в документации Groovy упоминается свойство синтаксического сахара, работающего со способами, отличными от getter/seters. Поэтому я был удивлен, увидев, что он работает для isFile(). В принципе, мне было интересно, что другие типы сигнатур свойств синтаксического сахара применимы к другим, которые «получают», «устанавливают» и «есть». – solstice333
Причина, по которой они шли с «is», заключается в том, что это идиома Java. Как правило, с булевыми полями геттер имеет префикс «is», а не «get». Еще одна тонкость Groovy! – rockympls