我已经阅读了几篇关于不变性的文章,但仍然没有很好地遵循这个概念.
我最近在这里提到了一个线程,提到了不变性,但由于这本身就是一个话题,我现在正在制作一个专门的线程.
我在过去的帖子中提到过,我认为不变性是将对象设为只读并使其可见性低的过程.另一位成员表示,这与此没有任何关系.此页面(系列的一部分)使用不可变类/结构的示例,它使用readonly和其他概念将其锁定.
在这个例子中,状态的定义究竟是什么?国家是一个我没有真正掌握的概念.
从设计指南的角度来看,一个不可变的类必须是一个不接受用户输入并且真的只返回值的类?
我的理解是,任何只返回信息的对象都应该是不可变的并且"锁定",对吧?因此,如果我想在具有该方法的专用类中返回当前时间,我应该使用引用类型,因为它将工作类型的引用,因此我受益于不变性.
我有一个ruby代码库,并寻找我运行的缺陷
$ rubocop
Run Code Online (Sandbox Code Playgroud)
我明白了
$ rubocop
Inspecting 153 files
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCWWCCCCC
Offenses:
Gemfile:1:1: C: Missing magic comment # frozen_string_literal: true.
source "https://rubygems.org"
Run Code Online (Sandbox Code Playgroud)
我的Gemfile需要进行哪些修改才能使rubocop不抱怨?
在ruby中,可以通过文件开头的两个不同的魔术注释来冻结文件中的所有常量字符串:
# frozen_string_literal: true
Run Code Online (Sandbox Code Playgroud)
和
# -*- immutable: string -*-
Run Code Online (Sandbox Code Playgroud)
我不知道有什么不同之处.有吗?