【问题标题】:Coffeescript Array IndexingCoffeescript 数组索引
【发布时间】:2015-09-24 06:11:43
【问题描述】:

如果我在 coffeescript 中有一组照片

photos = [ly.p1, ly.p2, ly.p3, ly.p4, ly.p5, ly.p6, ly.p7, ly.p8, ly.p9, ly.p10, ly.p11, ly.p12]

for photo, i in photos
    photoMask = new Layer

如何编写我的 for 循环,以便将生成的 photoMask 对象输出为 photoMask1、photoMask2、photoMask3 .. photoMask12?


编辑:进一步阐述

也许解释这一点的最好方法是我在伪代码中尝试做的事情:

for photo, i in photos
    photoMask[i] = new Layer
    photoMask[i].addSubLayer(photo)

所以ly.p1 将有一个对应的photoMask1。这样我就可以分别独立访问photoMask1了。

【问题讨论】:

  • 当数组或对象更易于使用时,为什么要创建 12 个变量?
  • @muistooshort 这是我正在使用的工具的性质。这里有什么想法吗?
  • 您确定该工具需要一堆变量吗?这没有意义,这是什么工具?
  • 嘿 @muistooshort 感谢 cmets。如果您有任何可能有帮助的想法,我在上面添加了一些上下文。到目前为止,我很欣赏你的评论。
  • .. 我使用的工具是一个原型工具,叫做 Framer.js。我正在尝试创建层(例如photoMask1)以与其父层(例如ly.p1)相对应,以便我可以单独且独立地访问photoMask1。目前,photoMask 对象已创建,但它们未命名,因此我以后无法访问它们。任何一种方法来做到这一点都是这里的目标。非常感谢您的任何想法。

标签: arrays loops for-loop coffeescript


【解决方案1】:

虽然我同意评论者认为这有点奇怪,但您可以使用以下内容:

photos = [ly.p1, ly.p2, ly.p3, ly.p4, ly.p5, ly.p6, ly.p7, ly.p8, ly.p9, ly.p10, ly.p11, ly.p12]

masks = {}

for photo, i in photos
    photoMask = new Layer
    masks["photoMask#{i}"] = photoMask

这将在掩码对象中创建动态键名。如果您确实需要全局(在浏览器中)它们,您可以使用 window 对象做同样的事情。

但在不知道你到底想做什么的情况下,我不会推荐上述任何一种。

【讨论】:

  • 谢谢,很高兴知道。我为上面的问题添加了更多上下文。如果您对这个问题有进一步的了解,我将不胜感激。非常感谢您迄今为止的帮助。
猜你喜欢
  • 2014-05-04
  • 2014-10-29
  • 1970-01-01
  • 2010-10-28
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多