草庐IT

java - 哪些语言支持 Lenses 或类似的方式来更新不可变的嵌套结构?

虽然不变性受到许多人的称赞,但我发现它很难在主流编程中维护。根据我的经验,程序员迟早会让字段再次可变,以避免重构必须传递更新对象和返回值的大段代码。Scala对复制构造函数有一些支持,但我知道更新复杂对象结构没有令人满意的解决方案。我可能错过了什么。我试验过的最好的实现是Haskell中的data-lens。然而,Haskell很难学。Java或Scala等流行的跨平台编程语言有哪些选择? 最佳答案 确实不需要对镜头提供语言级别的支持——尽管它们当然可能或多或少有用,具体取决于语言的属性,并且语法的清晰度将取决于语言特性。正如我在上

swift - 镜头到 Swift 属性

有什么方法可以在Swift中为类中的属性自动生成getter/setter函数对吗?类似于Haskell中的镜头。我已经能够手动执行以下操作:classPropertyLens{letgetter:U->Tletsetter:(U,T)->()init(getter:(U->T),setter:((U,T)->())){self.getter=getterself.setter=setter}funcget(u:U)->T{returngetter(u)}funcset(u:U,t:T){setter(u,t)}}//...letmyPropertyLens=PropertyLens(