2013-06-03 11 views
14

मैं पता लगाने के लिए दो परमाणुओं को श्रेणीबद्ध करने के लिए कैसे कोशिश कर रहा हूँ:दो परमाणुओं/तारों को कैसे संयोजित करें?

A = 'my ', 
B = 'atom', 

मैं इन दो परमाणुओं कैसे जोड़ सकते हैं, ताकि परिणाम है:

'my atom' 

?

उत्तर

17

के लिए परमाणुओं:

 
?-  atom_concat ('my ', 'atom', X). 
X = 'my atom'. 

के लिए तार:

 
:-  set_prolog_flag (double_quotes , chars). 
:-  use_module (library(double_quotes)). 

?-  append ("my ", "string", X). 
X = "my string". 

यह मुझे थोड़ी देर के वास्तविक नामों को खोजने के लिए ले लिया। शायद यह दूसरों की भी मदद करेगा।

+1

@ kaitlinHipkin के उत्तर में समझाया गया है, आपको तारों के लिए 'append/3'' के बजाय 'string_concat/3' का उपयोग करना चाहिए। – morxa

+1

@morxa: मैंने उस समय sicstus prolog का उपयोग किया था। तो एक डाउनवोट कठोर है क्योंकि प्रोलॉग वितरण में ऐसा कोई कार्य नहीं है। :-) –

+0

उत्तर से पता चलता है कि यह सभी प्रोलॉग कार्यान्वयन के लिए सबसे अच्छा तरीका है, आप कभी भी यह नहीं कह सकते कि यह सिस्टस के लिए है। Afaik, संलग्न/3 आईएसओ नहीं है, या तो। वर्णों के लिए डबल_क्वाट सेट करना एप्लिकेशन को तोड़ सकता है। भले ही आप 'string_concat/3' का उपयोग नहीं करना चाहते हैं, फिर भी' atom_string/2' और 'atom_concat/3' का संयोजन बेहतर है। – morxa

2

यहां एक साधारण समाधान है जो चीजों को कम नहीं करता है।

परमाणुओं संलग्न करने के लिए, atom_concat/3 विधेय का उपयोग करें:

A='my ', 
B='atom', 
atom_concat(A, B, FinalAtom). 

तार संलग्न करने के लिए, string_concat/3 विधेय का उपयोग करें:

A="my ",  % single quotes also work 
B="string", 
string_concat(A, B, FinalString) 

दोनों लिंक आधिकारिक SWI पर मौजूद पृष्ठों पर -प्रोगोल दस्तावेज वेबसाइट।

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