2010-11-23 11 views
8

उदाहरण के लिए, मैं list(104, 101, 108, 108, 111) या list("h", "e", "l", "l", "o")मैं स्ट्रिंग को Io में किसी सूची में कैसे परिवर्तित करूं?

में "hello" चालू करने के लिए अब तक मैं एक खाली सूची अपने आप को बनाने के बाद, foreach का इस्तेमाल किया और सूची में हर आइटम संलग्न करना चाहते हैं, लेकिन वह वास्तव में करने के लिए एक संक्षिप्त तरीके से नहीं है यह।

+0

आप ** वास्तव में ** नहीं पता करने के लिए आप में एक सूची के लिए एक स्ट्रिंग परिवर्तित करने के लिए के माध्यम से जाना है क्या चाहते हैं हेल-भाषा। ;-) –

+0

lol .. अगर मैंने कभी भी एक गंभीर गंभीर प्रोग्रामिंग भाषा बनाई है तो मैं इसे हेल नाम देने का वादा करता हूं :) – Jakob

+0

विषय बंद लेकिन एसओ पर यहां आईओ प्रश्नों के लिए प्रासंगिक है। मैंने हाल ही में आपके द्वारा किए गए टैग टैग को रोलबैक कर दिया है क्योंकि 'iolanguage' Io के लिए कैनोलिक टैग है। – draegtun

उत्तर

2

एक तरह से Regex ऐड-ऑन का उपयोग करने के होगा:

#!/usr/bin/env io 

Regex 

myList := "hello" allMatchesOfRegex(".") map (at(0)) 

लेकिन मुझे यकीन है कि अन्य (और शायद और भी बेहतर!) तरीक़े तो होंगे ही कर रहा हूँ।


अद्यतन - पुन: प्रश्न में मेरी टिप्पणी। अनुक्रम वस्तु में कुछ बनाया जाना अच्छा लगेगा।

Sequence asList := method (
    Regex 
    self allMatchesOfRegex(".") map (at(0)) 
) 

# now its just 
myList := "hello" asList 
+0

यह एक रचनात्मक समाधान है, लेकिन वास्तव में नहीं बेहतर नहीं :) – Jakob

+0

'foreach' से बेहतर है क्योंकि कोई बिल्ली के बच्चे^एच^एच^एच^एच^एच^एच^एच चर के निर्माण को उसके निर्माण में नुकसान पहुंचाया गया या मार दिया गया :) – draegtun

+1

स्टैक ओवरफ्लो पर चारों ओर लटकने वाले कई आईओ-लोग नहीं हैं (या उस मामले के लिए कहीं भी)। उत्साह के लिए +1 :) – Jakob

5

मेरा अपना सुझाव: उदाहरण के लिए

Sequence asList := method(
    result := list() 
    self foreach(x, 
    result append(x) 
) 
) 

यह प्रदर्शन के लिहाज से लेकिन regexp से बचने के लिए कुछ के लिए खाते चाहिए परीक्षण नहीं किया है।

+0

हां 'foreach' अधिक प्रदर्शन करने वाला होगा। हालांकि यह कम संक्षिप्त है। उम्मीद है कि एक संक्षिप्त प्रदर्शन समाधान बाहर है? – draegtun

+2

इस दृष्टिकोण के समान कुछ परीक्षणों में से एक में उपयोग किया जाता है (बाइटलिस्ट देखें): https: // github।com/stevedekorte/io/blob/master/libs/iovm/test/correctness/अनुक्रम BitTest.io – dstnbrkr

+1

थोड़ा गति: 'परिणाम: = सूची() preallocateToSize (स्वयं आकार) ' – Tino

3

एक और अच्छी तरह से संक्षिप्त लेकिन अभी भी दुर्भाग्य foreach समाधान की तुलना में धीमी:

Sequence asList := method (
    Range 0 to(self size - 1) map (v, self at(v) asCharacter) 
) 
संबंधित मुद्दे

 संबंधित मुद्दे