1

このような関数や変数を非表示にするために自己呼び出し関数を使用するのは良い考えですか?

もっと良い方法はありますか?

同じレベルで関数と変数を宣言するよりも遅いですか?

validator = require 'json-schema'

actionA = do ->
  schema =
    type : 'object'
    properties:
      param1 : { type : 'string', required : true }
      param2 : { type : 'string', required : true }

  encode = (results) -> JSON.parse(results)

  (params, callback) ->
    res = validator.validate params, schema
    value = if res.valid then encode(params) else false
    callback value

actionB = do ->
  schema =
    type : 'object'
    properties:
      param1 : { type : 'integer', required : true }
      param2 : { type : 'integer', optional : true }

  encode = (results) -> JSON.stringify(results)

  (params, callback) ->
    res = validator.validate params, schema
    value = if res.valid then encode(params) else false
    callback value

ご協力ありがとうございました。

4

1 に答える 1

1

はい、大丈夫だと思います。実際、CoffeeScriptで「クラス」を作成すると

class Test
  constructor: ->
    @foo = 'bar'

これにコンパイルされます:

var Test;

Test = (function() {

  function Test() {
    this.foo = 'bar';
  }

  return Test;

})();

これは主にあなたが投稿したコードと同じことをします。

于 2012-07-14T02:12:00.103 に答える