Staging

開発BLOG

匿名クラス

Javaの匿名クラスについて書く。

匿名クラスとは?

  • 特定の文の中でしか利用できない。
  • 宣言と利用を同時に行う。

メリット

  • シンプルなコードになる
  • 命名する必要がない

構文

new インターフェイス名(引数) {
  メソッド・フィールド定義
}

値型と参照型

値型と参照型の違い

前提として、Swiftのデータ型は、値型と参照型に大別されて、クラスは参照型・その他の型が値型である。

値型

var str1: String = "ほげ"
var str2: String = str1

上の例では、それぞれ別の実体を参照している。

ですので、

str1 = "ふが"

としてもstr2の値は変わらない。

参照型

続いて参照型の例

class Hoge {
  var num: Int = 0
}

var hoge: Hoge = Hoge()
var hoge2: Hoge = hoge

hoge.num = 10 // hoge2.numも変更される

上の例のように、 参照型では同じ実体を参照しているということがわかる。

参照している実体の確認方法

=== を使うと確認できる

class Hoge{
    var num: Int = 0
}
 
var hoge1: Hoge = Hoge()
var hoge2: Hoge = hoge1
var hoge3: Hoge = Hoge()
 
print(hoge1 === hoge2) // => true
print(hoge1 === hoge3) // => false

Thx

qiita.com

開発環境でFakeなIPを使う

開発環境において、特定のIPからアクセスして動作確認等したい時があるかもしれません。

そんな時用にメモ

まずはRack Middlewareを実装します。

lib/fake_ip.rb

class FakeIp
  def initialize(app, ip)
    @app = app
    @ip = ip
  end

  def call(env)
    env['HTTP_X_FORWARDED_FOR'] = nil
    env['REMOTE_ADDR'] = env['action_dispatch.remote_ip'] = @ip
    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  end
end

引数に好きなIPを渡します。

config/environments/development.rb

config.middleware.use('FakeIp', 'IP') 

以上。