我是一个刚接触Java的新手,之前从事Ruby开发。我喜欢Ruby非常简洁的语法,例如||=。
当然,我知道编译型语言与解释型语言不同,但我想知道Java是否有类似的语法。
特别地,在Ruby中我经常这样做:
someVar ||= SomeClass.new
我认为这种方法非常简洁而强大,但目前我所能想到的实现同样效果的唯一方法是非常冗长的:
if(someVar == null){
someVar = new SomeClass()
}
我只是想提升我的Java技能,语法肯定是我不擅长的领域之一。
someVar = someVar ?? new SomeClass()
:) - Nick Craverpublic List<string> Strings { set { _strings = value; } get { return _strings ?? (_strings = new List<string>()) };
。现在如果我能指定一个自动生成的自动属性,如果它为空就自动生成get方法就好了。也许可以像这样:public List<string> Strings { set; safe-get; }
。 - Chris MarisicsomeVar ||= SomeClass.new
==someVar = someVar ?? new SomeClass()
在 C# 中,它既是赋值又是获取,只是在 Ruby 中非常简短。 - Nick Craverreturn someVar ||= SomeClass.new
,但你不能执行return someVar = someVar ?? new SomeClass()
,而我的版本可以。如果你不能在Ruby中执行return someVar ||= SomeClass.new
,那么无论是if/else、三元运算符、空值合并赋值还是空值合并自赋值,在C#中实现它都无所谓。 - Chris Marisicreturn someVar = someVar ?? new SomeClass()
,试试吧 :) 但是...大多数情况下,在Ruby中你并不会使用这种方式进行返回,只是为了在几行代码后使用它。 - Nick Craver