ভেরিয়েবল দ্বারা রেফারেন্স করা টোকেন থেকে প্যারাম কীভাবে পাস করবেন?


10

সরাসরি টোকেন নাম ব্যবহার করে আমি সহজেই টোকেন স্বাক্ষরগুলি ব্যবহার করতে পারি:

my token t ( $x ) { $x };

'axb' ~~ / 'a' <t: 'x'> 'b' /;      # match
'axb' ~~ / 'a' <t( 'x' )> 'b' /;    # match

টোকেনটি যখন ভেরিয়েবলে সংরক্ষণ করা হয় তবে আমি এটি করার কোনও উপায় খুঁজে পাই নি:

my $t = token ( $x ) { $x };

'axb' ~~ / 'a' <$t: 'x'> 'b' /;
'axb' ~~ / 'a' <$t( 'x' )> 'b' /;

উভয়ই দেয়:

===SORRY!=== Error while compiling ...
Unable to parse expression in metachar:sym<assert>; couldn't find final '>'

এটি করার জন্য ম্যাজিক সিনট্যাক্স কী?

বিটিডাব্লু: আমি এমনকি রাকু পরীক্ষার স্যুটটিও ব্রাউজ করেছি এবং এতে এরকম মামলা অন্তর্ভুক্ত নেই roast/S05-grammar/signatures.t

উত্তর:


8

উভয় ক্ষেত্রেই:

  • রাকুকে স্পষ্টভাবে জানাতে আপনি আপনার $সিগিল'ড টোকেন ভেরিয়েবলটিকে একটি হিসাবে ব্যবহার করতে চান তা জানাতে jnthn এর উত্তরে সমাধানটি ব্যবহার করুন Callable

  • সুস্পষ্টভাবে Callableপ্রথম স্থানে থাকা হিসাবে ভেরিয়েবলটি ঘোষণা করুন এবং কলটিতে সংশ্লিষ্ট পরিবর্তন করুন:

my &t = token ( $x ) { $x };

say 'axb' ~~ / 'a' <&t: 'x'> 'b' /;   # 「axb」
say 'axb' ~~ / 'a' <&t( 'x' )> 'b' /; # 「axb」

2
টোকেনগুলি নির্দিষ্ট বৈশিষ্ট্যগুলির সাথে সবেমাত্র পুনরায় তৈরি হয় এবং রেজিগেন পরিবর্তে কলযোগ্য হয়, সুতরাং তারা &ভেরিয়েবলগুলিতে যেতে পারে point
user0721090601

1
ধন্যবাদ! যদিও জান্টন আমার প্রশ্নের উত্তর খুব সরাসরি দিয়েছি আমি উত্তরটিকে এই হিসাবে চিহ্নিত করছি, কারণ এটি আমার সমস্যার আসল কারণ - ভুল সিগিলের উপর জোর দেয়। টোকেনকে শুরু থেকে কলযোগ্য হিসাবে চিকিত্সা করা অনেক পরিষ্কার সমাধান।
পাভেল পাবিয়ান বিবিকেআর

11

&চলকের আগে একটি রাখুন :

my $t = token ( $x ) { $x };
say 'axb' ~~ / 'a' <&$t: 'x'> 'b' /;
say 'axb' ~~ / 'a' <&$t( 'x' )> 'b' /;

পার্সারটি অনুসন্ধান করে &এবং তারপরে রাকু ভেরিয়েবল পার্স বিধিতে প্রতিনিধি প্রেরণ করে, যা আনন্দের সাথে এই প্রসঙ্গে একটি বিষয়কে বিশ্লেষণ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.