3

でこのようなことをしようとしていますcoffescriptが、機能していません。

locations =
  [59.32522, 18.07002]
  [59.327383, 18.06747]
4

2 に答える 2

2

ああ、私はそれを理解しました..

locations = [
  [59.32522, 18.07002]
  [59.327383, 18.06747]
]
于 2012-12-28T03:42:26.690 に答える
1

私はあなたがあなた自身の質問に対する解決策を見つけたことを理解しています、そしてこれはあなたがカークを探している正確な答えではありません。しかし、Rubyには、私が好きなハッシュオブジェクトの任意のハッシュがあります(固定次元配列よりもメモリを大量に消費することに注意してください)。

差出人:http ://www.ruby-forum.com/topic/130324

著者:セバスチャンハンゲレッカー

blk = lambda {|h,k| h[k] = Hash.new(&blk)}
x = Hash.new(&blk)
x[:la][:li][:lu][:chunky][:bacon][:foo] = "bar"

この構造の興味深い点は、この構造を使用して、必要なあらゆる種類のネストされたハッシュをその場で作成できることです(mkdir -pを使用してサブディレクトリを作成するようなものです)。JSONオブジェクトといくつかの性質を共有しています。

同様のオブジェクトがCoffeeScriptでどのように表示されるかを見てみましょう

x = 
  la:  
    li:  
      lu:  
        chunky:  
          bacon:  
            foo: 'bar' 

alert x['la']['li']['lu']['chunky']['bacon']['foo']


y = { la: { li: { lu: { chunky: { bacon: { foo:'bary' } } } } } }  

alert y['la']['li']['lu']['chunky']['bacon']['foo']

ブラケット演算子はJavascriptでオーバーロードできないため、純粋なJSONオブジェクトの作成よりも、インターフェイスを移動するときにクリーンな作成を思い付くことができませんでした。

わかりました。JSON構文のわずかな省略形を思いつきましたが、RubyのnestedHashほど良くはありません。

Block = (obj,rest...) ->
  console.log 'obj',obj
  console.log 'rest',rest
  obj = {} if (typeof obj is "undefined") 
  if rest.length >= 2
    key = rest[0]
    obj[key] = Block(obj[key],rest[1...]...)
    obj
  else if rest.length is 1
    obj = rest[0]

z = new Block(z,'la','li','lu','chunky','bacon','foo','barz')
console.log z['la']['li']['lu']['chunky']['bacon']['foo']
# extend the object
z = new Block(z,'la','li','lu','chunky','bacon','fooz','ball')
console.log JSON.stringify(z)

# add a node to an internal hash
a = z['la']['li']['lu']
a = new Block(a,'chunky','bacon','another','node')
console.log 'a is',JSON.stringify(a)

# the node now exists on the parent as well
console.log 'z is',JSON.stringify(z)
于 2012-12-28T19:44:36.143 に答える