0

Cadence SKILL (LISP および SCHEME に基づく独自の EDA 言語) では、プロシージャで引数の型を定義できます。
間違ったタイプの引数が与えられた場合、エラーになります。以下のシェルレポートを参照してください。

procedure( foo( ko "t" ) printf( "Hey %s\n" ko ) )
>foo
>foo("1")
>Hey 1
>t
foo(1)
>*Error* foo: argument #1 should be a string (type template = "t") - 1

Ruby でこれほど気の利いたものはありますか? つまり、本体ではなく、メソッドのインターフェース定義で、型チェックが行われるということですか?
ありがとう。

4

2 に答える 2

1

次のように「気の利いた」ものにすることができます。

module FirstArgumentIsAString
  module Initializer
    def initialize(word)
      fail 'Word must be String' unless word.is_a?(String)
      super
    end
  end

  def self.included(klass)
    klass.send :prepend, Initializer
  end
end

class Foo
  include FirstArgumentIsAString
end

y = Foo.new(2)
> Uncaught exception: Word must be String
于 2016-06-10T12:42:41.363 に答える
0

あなたはいつでもできる

fail 'Keep input as a string' unless variable_name.is_a?(String)

動的型付け言語の考え方ではありませんが、ダックタイピングを実現してみてください

于 2016-06-10T10:56:49.160 に答える