Skip to main content

getter

Swift

swift
var name: String { get { return this.mName } }
  • setter がない(つまり read-only)なら get { .. } は省略可
  • 1文だけなら return も省略可

つまりこうなる

swift
var name: String { this.mName }

TypeScript

ts
get name(): string { return this.mName; }
ts
class Class01 {
private mName: string;
private mAge: number;

constructor(name: string, age: number) {
this.mName = name;
this.mAge = age;
}

get name(): string { return this.mName; }
set name(v: string) { this.mName = v; }
get age(): number { return this.mAge; }
set age(v: number) { this.mAge = v; }
}

const c = new Class01("testarou", 15);
c.name // => "testarou"
c.age // => 15
c.age++ // => 16
c.age += 2 // => 18
c.age = 20 // => 20
  • name, name, age, age の順で書くのが良いらしい
  • name, age, name, age の順で書くと、TSLint に怒られる

All 'name' signatures should be adjacent (adjacent-overload-signatures)

Ruby

rb
attr_reader :name
rb
c = Class01.new
c.member01 = 'Hello'
puts c.member01 # => 'Hello'

class Class01
attr_accessor :member01
end

class Class01
def member01 # getter
@member01
end

def member01=(val) # setter
@member01 = val
end
end

class Class01
attr_reader :member01
attr_writer :member01
end