ইমাস লিস্পে, কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে কিনা তা আমি কীভাবে পরীক্ষা করব?


93

ইমাস লিস্পে, কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে কিনা তা আমি কীভাবে পরীক্ষা করব?

উত্তর:


139

আপনি বাউন্ডপ চাইতে পারেন: পরিবর্তনশীল (প্রতীক) শূন্য না হলে t প্রদান করে; আরও স্পষ্টভাবে, যদি এর বর্তমান বাঁধাইটি বাতিল হয় না is এটি অন্যথায় শূন্য ফেরত।

  (boundp 'abracadabra)          ; Starts out void.
  => nil

  (let ((abracadabra 5))         ; Locally bind it.
    (boundp 'abracadabra))
  => t

  (boundp 'abracadabra)          ; Still globally void.
  => nil

  (setq abracadabra 5)           ; Make it globally nonvoid.
  => 5

  (boundp 'abracadabra)
  => t

14
কখনও কখনও এটি প্রতীক আছে কিনা তা পরীক্ষা করতে ইন্টারএন-সফট ব্যবহার করাও কার্যকর হতে পারে।
রেনার জোসভিগ

আমি কখনও কখনও symbol-valueআসল মান মুদ্রণের জন্য ফাংশন ব্যবহার করি । প্রতীক-মান-ডক । ইগস: eval-expressionকমান্ডটি ব্যবহার করে এবং তারপরে এটি টাইপ করে: (symbol-value 'abracadabra)
ধাওয়ান গাইশ


4

আপনি যদি ইমাসের মধ্যে থেকে কোনও পরিবর্তনশীল মানটি পরীক্ষা করতে চান (তবে এটি "প্রয়োগ হয় কিনা তা আমি জানি না, যেহেতু আপনি" ইমাস লিস্পে "লিখেছেন?):

M-:Evalমিনি বাফারে শুরু হয়। ভেরিয়েবলের নামে লিখুন এবং রিটার্ন টিপুন। মিনি-বাফারটি ভেরিয়েবলের মান দেখায়।

যদি ভেরিয়েবলটি সংজ্ঞায়িত না করা হয় তবে আপনি একটি ডিবাগার ত্রুটি পান।


সমানভাবে, M-: (boundp 'the-variable-name) RETত্রুটি ট্রিগার করার প্রয়োজন ছাড়াই পরীক্ষা করবে।
র‌্যাডন রোজবারো

আমি নিশ্চিত যে প্রশ্নটি এলিস্প স্ক্রিপ্ট সম্পর্কে, ইমাসের ইন্টারেক্টিভ ইউআই নয়।
বিনকি

0

মনে রাখবেন যে ভিলিয়েবলের মান শূন্য রয়েছে এমনটিকে সংজ্ঞায়িত হিসাবে গণ্য করা হয়।

(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t

(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.