সাবকুট রকুতে রফতানি করা যায়?


9

আমি কয়েকটি সাবসেট সংজ্ঞায়িত করতে চাই যেখানে আমি dieকয়েকটি কার্যকর ত্রুটি বার্তার জন্য কয়েকটি বাধা এবং কিছু বিবৃতি যুক্ত করছি। আমি সেইগুলিকে যে মডিউলগুলি ব্যবহার করে তার শীর্ষে এগুলি সংজ্ঞায়িত করতে চাই না এবং পরিবর্তে তাদের সম্পূর্ণরূপে যোগ্যতাসম্পন্ন নাম (এফকিউএন) ব্যবহার করে দূরে রেখে অন্য মডিউলে রাখতে চাই। উদাহরণস্বরূপ, আমি আছে

unit module Long::Module::Subsets;

subset PosInt
where ($_ ~~ Int || "The value must be an integer")
   && ($_ > 0    || "The value must be greater than 0")
is export
;

# other subsets ...

কিন্তু পেয়েছি

===SORRY!=== Error while compiling /tmp/637321813/main.pl6
Two terms in a row ...

আমি যে কাজ করেছিলাম তা অনুভব করেছি যে পরিবর্তে আমি নীচে কিছু করতে পারি তবে আমি ভাবছি যে আমি যদি এটি করা এড়াতে পারি:

use Long::Module::Subsets;

unit Long::Module;

my constant PosInt = Long::Module::Subsets::PosInt;
my constant Byte   = Long::Module::Subsets::Byte;
# ... more subsets here

# ... some code here

my PosInt $age;

1
পার্শ্ব নোট হিসাবে, এখানে একটি সাধারণ সাবসেট মডিউল রয়েছে যা পজিয়ান্ট অন্তর্ভুক্ত করে: github.com/bradclawsie/Subsets-Common
user0721090601

উত্তর:


12

সাবসেটগুলি সত্যই রফতানি করা যায়। এখানে সমস্যাটি হ'ল is exportবৈশিষ্টটি উপসেটটিতে যথাযথভাবে প্রয়োগ করা হয়নি PosInt(এবং অন্য যে কোনও উপসেট আপনি রফতানি করতেও চেয়েছিলেন); বৈশিষ্ট্যটি নতুন ধরণের সংজ্ঞায়িত হওয়ার সাথে সাথেই প্রয়োগ করা উচিত এবং যে কোনও প্রতিবন্ধকতার সাথে পরিচয় করানোর আগে ডান হওয়া উচিত where। বৈশিষ্ট্যটি সঠিকভাবে প্রয়োগ করে:

unit module Long::Module::Subsets;

subset PosInt is export
where ($_ ~~ Int || "The value must be an integer")
   && ($_ > 0    || "The value must be greater than 0")
;

# other subsets ...

নিম্নলিখিতটি ভাল কাজ করা উচিত:

use Long::Module::Subsets;

unit Long::Module;

# ... some code here

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