2017-10-10 93 views
0

一系列數字,我有幾個簡單的問題,所以我把它們放在一起:創建紅色語言

  1. 什麼是創建一系列數字的最佳方式。下面的作品,但有一種簡單的方法,如1:10某些語言可用?

    myseries: []

    repeat i 10 [append myseries i]

    print myseries

(1a上。爲什麼上面的代碼此頁面上不使通常的代碼塊?)

  • 同樣,創建一系列10個元素的最佳方式是什麼,所有啓動alized爲0或「」?我還必須在那裏使用repeat i 10loop 10並連續使用append一個最初的空白系列?

  • 另外,在初始創建系列時,是否應該像下面的代碼那樣指定元素的數量?不這樣做的缺點是什麼?

    myseries:make block! 10

  • 感謝您的幫助。

    +0

    這絕對是我覺得應該更容易做的事情之一。然而,其中一個原因並非如此,重點是直接對數據進行處理,而不是事先產生一系列數據。儘管如此,我的願望清單還有很多其他陣列處理功能 –

    回答

    0

    1)我不知道在這個時候更好的方法,雖然https://gitter.im/red/...大約有一系列數據類型或實現

    一)它使一個塊的討論。你看到probe myseries。你能指望什麼?

    2)>> append/dup [] 0 10 == [0 0 0 0 0 0 0 0 0 0]

    3)如果你不初始化/保留所需要的內存,必須作出一個猜測需要多少內存。這可能超過需要或更少。如果少於紅色則需要分配另一塊內存。如果你需要更多的內存,這可能會發生幾次。如果它想要連續記憶,也許它也必須繞過內存塊,但我不知道使用的策略。

    4

    1)我更傾向於將與COLLECT這裏去:

    myseries: collect [repeat i 10 [keep i]] 
    

    2)查看ARRAY功能:

    >> array/initial 10 0 
    == [0 0 0 0 0 0 0 0 0 0] 
    

    你也可以傳遞一個匿名函數:

    >> i: 0 array/initial 10 does [i: i + 1] 
    == [1 2 3 4 5 6 7 8 9 10] 
    

    3)通常最好使用myseries: make block! 10(或者如果siz只是0 e的塊是未知的),以避免不必要的陷阱!見To copy or not to copy, that is the question & Is REBOL a Pure Functional Language?