Tôi đang cố gắng để tìm hiểu làm thế nào để nối hai nguyên tử:Làm thế nào để nối hai nguyên tử/chuỗi?
A = 'my ',
B = 'atom',
Làm thế nào tôi có thể nối hai nguyên tử những cái mà kết quả là:
'my atom'
?
Tôi đang cố gắng để tìm hiểu làm thế nào để nối hai nguyên tử:Làm thế nào để nối hai nguyên tử/chuỗi?
A = 'my ',
B = 'atom',
Làm thế nào tôi có thể nối hai nguyên tử những cái mà kết quả là:
'my atom'
?
Đối nguyên tử:
?- atom_concat ('my ', 'atom', X). X = 'my atom'.
Đối chuỗi:
:- set_prolog_flag (double_quotes , chars). :- use_module (library(double_quotes)). ?- append ("my ", "string", X). X = "my string".
Tôi đã mất một thời gian để tìm ra tên riêng. Có lẽ nó cũng sẽ giúp người khác.
Đây là một giải pháp đơn giản không vượt quá mọi thứ.
Để thêm nguyên tử, sử dụng atom_concat/3 ngữ:
A='my ',
B='atom',
atom_concat(A, B, FinalAtom).
Để thêm chuỗi, sử dụng string_concat/3 ngữ:
A="my ", % single quotes also work
B="string",
string_concat(A, B, FinalString)
Cả hai liên kết đến các trang trên SWI chính thức -Prolog tài liệu trang web.
Bạn nên sử dụng 'string_concat/3' thay vì' append/3' cho chuỗi, như được giải thích trong câu trả lời của @KaitlinHipkin. – morxa
@morxa: Tôi đã sử dụng sicstus prolog vào thời điểm đó. Vì vậy, một downvote là loại khắc nghiệt như không có chức năng như vậy trong phân phối prolog. :-) –
câu trả lời cho thấy đây là cách tốt nhất cho tất cả các triển khai Prolog, bạn không bao giờ nói nó cho sicstus. Afaik, append/3 cũng không phải là ISO. Đặt double_quotes thành ký tự có thể phá vỡ các ứng dụng. Thậm chí nếu bạn không muốn sử dụng 'string_concat/3', thì sự kết hợp của' atom_string/2' và 'atom_concat/3' là tốt hơn. – morxa