ব্যবহারকারী-সংজ্ঞায়িত ইনফিক্স অপারেটর


10

আমি জানি জুলিয়ায় অপারেটরগুলি কেবল স্ট্যান্ডার্ড ফাংশন এবং আমি সাধারণ উপসর্গ কল সিনট্যাক্স ব্যবহার করে সেগুলি ব্যবহার করতে পারি:

julia> +(1, 2)
3

তবে এগুলি এই দিক থেকেও বিশেষ যে তারা ইনফিক্স অপারেটর হিসাবে ব্যবহৃত হতে পারে (এবং সাধারণত ব্যবহৃত হয়):

julia> 1+2
3


আমি কি নিজের ইনফিক্স অপারেটরটি সংজ্ঞায়িত করতে পারি? যদি তাই হয়, কিভাবে?

উদাহরণ স্বরূপ:

julia> α(x, y) = x+y
α (generic function with 1 method)

julia> α(1, 2)
3 # as expected

julia> 1α2
# expected result: 3
ERROR: UndefVarError: α2 not defined
Stacktrace:
 [1] top-level scope at REPL[5]:1

julia> 1 α 2
# expected result: 3
ERROR: syntax: extra token "α" after end of expression
Stacktrace:
 [1] top-level scope at REPL[5]:0

উত্তর:


14

যেমনটি আপনি বলেছেন, অপারেটরগুলি কেবলমাত্র স্ট্যান্ডার্ড ফাংশন, যা আপনি সংজ্ঞায়িত করতে পারেন এবং অন্য কোনও ফাংশনের মতো হেরফের করতে পারেন। তবে জুলিয়ার পার্সার ইনফিক্স অপারেটর হিসাবে প্রতীকগুলির একটি নির্দিষ্ট সেট সনাক্ত করতে কনফিগার করা হয়েছে; যদি আপনি এমন কোনও ক্রিয়া সংজ্ঞায়িত করেন যার নাম এই প্রতীকগুলির মধ্যে একটি, তবে এটি একটি ইনফিক্স অপারেটর হিসাবে বিভক্ত হবে।

উদাহরণ স্বরূপ:

julia> ⊕(x, y) = x+y
 (generic function with 1 method)

# standard prefix function call
julia> ⊕(1, 2)
3

# infix operator call
julia> 12
3

julia> 1  2
3


ইনফিক্স অপারেটর হিসাবে স্বীকৃত প্রতীকগুলির তালিকা (এবং সম্পর্কিত অগ্রাধিকার) জুলিয়া পার্সার উত্স কোডে পাওয়া যাবে । বেশিরভাগ ক্ষেত্রে, এই তালিকাটি ইউনিকোড বিভাগের এসএমএর একটি উপসেট (প্রতীক, গণিত) ।

এই মুহুর্তে, এটি উদাহরণস্বরূপ অন্তর্ভুক্ত করেছে:

  • একই প্রাধান্য দিয়ে পার্স করা +:
+ -        ±                 
                         
  • একই প্রাধান্য দিয়ে পার্স করা *:
* / ÷ % &   ×                   
          ⦿             
                       

7
আপনি প্রযুক্তিগতভাবে ম্যাক্রোগুলির শক্তি সহ অন্য কোনও চিহ্নকে ইনফিক্স অপারেটর হিসাবে ব্যবহার করতে পারেন ! (আপনি যদি সত্যিই চান) আমি একজন ছিল @infix হ্যাক (এটা সন্নিধি দ্বারা অন্তর্নিহিত গুণ উপর নির্ভর) যে এটা করেছে: julia> using InfixFunctions; @infix α(x, y) = x + y; 1 |α| 2। ( InfixFunctions.jlআমার জন্য ম্যাক্রো এক্সারসাইজ হিসাবে বিকাশ করা হয়েছিল, এটি জুলিয়া ১.x এর মতো কাজ করে না।)
সালচিপাপা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.