You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Crystal语言是否拥有Ruby中类似的attr_accessor等属性访问器方法?

Crystal与Ruby属性访问器的等价特性

Crystal确实提供了和Ruby中attr_accessor、attr_reader、attr_writer完全等价的特性,用法也高度相似,以下是具体说明:

  • attr_reader等价实现
    Crystal中直接使用attr_reader : 属性名来生成只读访问器,示例代码:

    class Person
      attr_reader :name
    
      def initialize(@name : String)
      end
    end
    
    person = Person.new("Alice")
    puts person.name # 允许读取属性值
    # person.name = "Bob" # 编译报错,无法修改
    
  • attr_writer等价实现
    对应使用attr_writer : 属性名生成只写访问器,示例代码:

    class Person
      attr_writer :age
    
      def initialize
        @age = 0
      end
    end
    
    person = Person.new
    person.age = 30 # 允许赋值
    # puts person.age # 编译报错,无法直接读取
    
  • attr_accessor等价实现
    使用attr_accessor : 属性名生成可读可写的访问器,示例代码:

    class Person
      attr_accessor :email
    
      def initialize(@email : String)
      end
    end
    
    person = Person.new("alice@example.com")
    puts person.email # 读取属性值
    person.email = "alice_new@example.com" # 修改属性值
    

需要注意的是,作为静态类型语言,Crystal的属性通常需要指定类型(如示例中的: String),这是和Ruby动态类型特性的一点差异,但核心的访问器功能与Ruby完全一致。

内容的提问来源于stack exchange,提问作者Jacob M. Barnard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:18