Raku rebless ไม่ทำงานกับคลาสที่สืบทอดมาอีกต่อไป


9

รหัสที่ให้ในเธรดนี้ใช้งานไม่ได้อีกต่อไป: ฉันจะลบวัตถุใน Perl 6 ได้อย่างไร?

ฉันเขียนโค้ดชิ้นนี้เมื่อปีที่แล้วและมันก็ใช้ได้แล้ว ตอนนี้มันไม่ได้:

class Person { ; }
class Woman is Person { ; }
my $tom = Person.new;
my $lisa = Woman.new;

say $tom.^name;  # -> Person
say $lisa.^name; # -> Woman

Metamodel::Primitives.rebless($tom, Woman);
# -> New type Woman for Person is not a mixin type

ข้อความแสดงข้อผิดพลาดไม่สมเหตุสมผลเนื่องจากควรทำงานกับคลาสที่สืบทอดมา อย่างน้อยมันก็เป็น

เอกสารไม่เป็นประโยชน์ https://docs.raku.org/routine/rebless


อาจเป็นข้อผิดพลาดในการถดถอย น่าจะดีที่สุดที่จะรายงานว่าเป็นปัญหาของ Rakudo
jjmerelo

มีการเปลี่ยนแปลงบางอย่างเมื่อเดือนกุมภาพันธ์ที่ผ่านมา: github.com/perl6/nqp/blob/
......

นอกจากนี้ฉันมีการปรับปรุงเอกสารที่มีการชี้เชิงอรรถที่จะตอบ @jnthn docs.raku.org/type/Metamodel::Primitives ขอบคุณ raiph
jjmerelo

คำตอบ:


11

มันควรจะทำงานกับคลาสที่สืบทอดมา

มันไม่ควรจะเป็นแบบนั้น ฉันออกแบบ API นั้นและนำไปใช้ตั้งแต่แรกและมันก็มีจุดประสงค์เพียงเพื่อเป็นรายละเอียดการใช้งานของมิกซ์อิน

จนกระทั่งเมื่อไม่นานมานี้มันไม่ได้เป็นส่วนหนึ่งของชุดทดสอบข้อกำหนดภาษา - และเมื่อมันกลายเป็นส่วนหนึ่งของชุดภาษานั้นมันก็มีความหมายในปัจจุบันและ จำกัด ความหมายมากขึ้น ข้อ จำกัด ของมันมีความสำคัญสำหรับเหตุผลด้านประสิทธิภาพ: เมื่อเรารู้ว่าไม่ใช่ประเภทที่สามารถเป็นเป้าหมายของการดำเนินการ mixin เราสามารถรวบรวมคุณสมบัติของ JIT ในการเข้าถึงวัตถุนั้นเป็นสิ่งที่ง่ายกว่ามาก (เราจ่ายเงื่อนไขแบบพิเศษ การเข้าถึงคุณลักษณะทุกครั้งก่อนการเปลี่ยนแปลงและตอนนี้ต้องจ่ายให้กับประเภทเป้าหมาย mixin เท่านั้น)

เป็นไปได้ที่จะแก้ไขโปรแกรมต้นฉบับให้ทำงานโดยใช้ MOP เพื่อสร้างคลาส ความจริงแล้วรายการต่อไปนี้ไม่ใช่โปรแกรมดั้งเดิม ฉันปรับแต่งเล็ก ๆ น้อย ๆ เพื่อแสดงให้เห็นว่ามีวิธีใดที่สามารถให้วิธีการในคลาสย่อยเป็นบทบาทที่ไม่ระบุชื่อเพื่อหลีกเลี่ยง MOP สำเร็จรูปมากเกินไป

class Person { method m() { "person" } }
constant Woman = do {
    my \w = Metamodel::ClassHOW.new_type(:is_mixin, :name<Woman>);
    w.^add_parent(Person);
    w.^add_role(role { method m() { "woman" } });
    w.^compose()
}
my $tom = Person.new;
my $lisa = Woman.new;

say $tom.^name;  # -> Person
say $lisa.^name; # -> Woman

say $tom.m; # person
Metamodel::Primitives.rebless($tom, Woman);
say $tom.m; # woman

ในขณะที่การแก้ไขโดยตรงไปที่โปรแกรมดั้งเดิมมีความหมายสั้นที่สุดมีวิธีที่สั้นกว่า: ใช้butโอเปอเรเตอร์บนPersonวัตถุชนิดเพื่อสร้างประเภทมิกซ์อินและส่งคืนจากนั้นปรับแต่งชื่อตามความต้องการของคุณ:

class Person { method m() { "person" } }
constant Woman = Person but role { method m() { "woman" } }
BEGIN Woman.^set_name('Woman');

my $tom = Person.new;
my $lisa = Woman.new;

say $tom.^name;  # -> Person
say $lisa.^name; # -> Woman

say $tom.m;
Metamodel::Primitives.rebless($tom, Woman);
say $tom.m;

ซึ่งมีเพียงหนึ่งบรรทัดพิเศษกว่าเดิมอยู่แล้ว


constant Woman = Person but role …ไม่ทราบว่าสามารถทำได้ ดังนั้นสำหรับBEGINสาย Raku เพียงดึงความสามารถในการทำกระบวนทัศน์ต้นแบบของสไตล์ JS ด้วยเช่นกัน!
user0721090601

ตกลง. ขอบคุณสำหรับคำอธิบาย ฉันหวังว่ามันจะหาทางลงในเอกสารเนื่องจากdocs.raku.org/routine/reblessค่อนข้างไร้ประโยชน์ ... ฉันจะอัปเดต« Beginning Raku "ในไม่ช้า
Arne Sommer

@ user0721090601 Raku สนับสนุน quoting S12: "ทั้งระดับพื้นฐานและการเขียนโปรแกรม OO ต้นแบบตาม" อย่างไรก็ตามถ้าคุณสร้างวัตถุโดยใช้classคีย์เวิร์ดดังนั้นการอ้างถึง S12 อีกครั้ง: "โดยค่าเริ่มต้นวัตถุที่ได้รับจากMuการสนับสนุนรูปแบบคลาสตามมาตรฐาน ... bless... เรียก ... รูทีนของ BUILD ... ความหมายเริ่มต้นของ BUILD คือ สืบทอดมาจากMu" โดยสรุปฉันขอยืนยันว่าถูกต้องมากกว่าที่จะบอกว่า Raku สนับสนุนA) "ทำการแปรปรวนอย่างจริงจังแม้กระทั่ง OO ที่อิงกับคลาสมาตรฐานด้วยรหัสสองบรรทัด" และ B) "OO ที่ใช้ต้นแบบ"
raiph

ดูraku-musings.com/reblessed.htmlสำหรับมุมมองของฉันเกี่ยวกับการทำลายการเปลี่ยนแปลง
Arne Sommer

5

ดูคำตอบของ jnthn สำหรับการสนทนาที่มีสิทธิ์เกี่ยวกับสิ่งที่เกิดขึ้นกับreblessสิ่งที่ต้องทำ

มันทำงานได้ ... ตอนนี้มันไม่ได้ .. ข้อความแสดงข้อผิดพลาดไม่สมเหตุสมผล ... มันควรจะทำงานกับคลาสที่สืบทอดมา ... อย่างน้อยมันก็เป็น ... เอกสารไม่เป็นประโยชน์

นี้ (ยาวพิเศษ!) คำตอบอาจจะมีมูลค่าการอ่านสำหรับผู้ที่สนใจในการอภิปรายต่อไปของหลักการและการปฏิบัติของTDDวิธีการที่รองรับการทำงานกับการเขียนโปรแกรมภาษา Raku และสิ่งประดิษฐ์ที่เกี่ยวข้องเช่นคอมไพเลอร์และ Rakudo docs.raku.orgเนื้อหา .

คำตอบนี้มีโครงสร้างเป็นการตอบสนองเฉพาะต่อส่วนเฉพาะของคำถามดั้งเดิมของ Arne และความคิดเห็นที่พวกเขาเขียนเพื่อตอบคำถามรุ่นก่อนหน้านี้ ความตั้งใจของฉันคือการทำให้ Arne มีประโยชน์มากขึ้นในขณะที่หวังว่าจะยังคงมีประโยชน์ต่อผู้อื่น

Arne:รหัสที่ให้ไว้ในเธรดนี้ไม่ทำงานอีกต่อไป: ฉันจะ rebless วัตถุใน Raku ได้อย่างไร

ฉันได้อัปเดตคำตอบที่ยอมรับแล้วเพื่อเชื่อมโยงกับ SO นี้

Arne:ฉันเขียนโค้ดชิ้นนี้เมื่อปีที่แล้วและมันก็ใช้ได้แล้ว ตอนนี้มันไม่ได้

การเปลี่ยนแปลงที่เกี่ยวข้องถูกกล่าวถึงในเดือนเมษายน 2019ที่ jnthn เขียนว่า:

เมื่อเร็ว ๆ นี้ประเภทที่เป็นเป้าหมายของการreblessดำเนินการเริ่มต้องถูกสร้างขึ้นอย่างชัดเจนว่าเป็นประเภท Mixin เป้าหมายเพื่อช่วยในการปรับให้เหมาะสม ...

ในความคิดเห็น 11 วันที่ผ่านมาปิดปัญหา GH rakudo "Rebless เป็นประเภทที่กำหนดเองไม่ทำงานอีกต่อไป"เขาเขียน:

คุณจะต้องจัดให้มีการis_mixinโต้แย้งชื่อที่ส่งไปยังClassHOW.new_type... ไม่มีวิธีที่จะทำเช่นนั้นกับไวยากรณ์ของชั้นเรียนดังนั้นประเภทเป้าหมายของ rebless จะต้องมีการชุมนุมโดยใช้ MOP ด้วย

(คลิกที่ลิงค์ด้านบนเพื่อรับทราบวิธีการทำในสิ่งที่แนะนำ)

ปัญหานี้จะกล่าวถึงอีกเล็กน้อยในการทำงาน ... มันก็ไม่ได้ ... เอกสารประกอบ ... ควรเอกสารส่วนการโทรด้านล่าง

Arne:มันควรจะทำงานกับคลาสที่สืบทอดมา อย่างน้อยมันก็เป็น

ย่าง - The R epository oฉLL s PECเสื้อ ESTs - กำหนดรหัส Raku ควรจะทำ ( st of roa stสามารถอ่านได้เหมือน s upposed t o s.)

ในอีกข้อความเมษายน 2019 jnthn เขียนว่า:

Metamodel::Primitives.reblessไม่มีสเป็คก่อนหน้านี้สำหรับเป็น ฉันเพิ่มการแสดงนี้เพื่อให้มี ซึ่งหมายความว่าขณะนี้มีคำจำกัดความของสิ่งที่คาดว่าจะทำงาน

ความจริงที่ว่าพฤติกรรม Rakudo เป็น spec'd โดยชุดทดสอบปฏิบัติการเป็นส่วนพื้นฐานของ @ แนวทางของแลร์รี่เพื่อให้มั่นใจว่าจะทำงานได้อย่างน่าเชื่อถือ Raku [1]และมีความหมายที่ลึกซึ้ง[2]

ผลกระทบของการเปลี่ยนแปลงนี้กับโมดูลที่ใช้กันอย่างแพร่หลาย

นี่คือภาพรวมของผลกระทบของการเปลี่ยนแปลงนี้ที่เกิดขึ้นกับโมดูล Inline :: Perl5 ที่เป็นที่นิยม

ในเดือนเมษายน 2019 นักปรุงอาหารเปิดปัญหา rakudo GH เกี่ยวกับผลกระทบInline::Perl5และฉันได้ดึงจุดเด่นของการแลกเปลี่ยนระหว่างนักชิมและเดือนกรกฎาคมด้านล่าง

(ฉันได้อธิบายบางสิ่งที่สำคัญในบริบทดั้งเดิม แต่เบี่ยงเบนความสนใจในบริบทของ SO นี้โปรดอย่าคิดว่าคุณมีความเข้าใจที่สมบูรณ์เกี่ยวกับบทสนทนาดั้งเดิมจากสารสกัดนี้หากสงสัยคลิกลิงค์ )

niner: TBH สิ่งที่ฉันทำที่นี่อาจจะเป็นเรื่องที่ไม่ดีอยู่เสมอ ... อาจเป็นได้ว่า ... ฉันสามารถกำจัด [มัน] ... จะดีแม้ว่าจะปรับใช้ Inline :: Perl5 แล้ว .

jnthn:Metamodel::Primitives.reblessไม่มีสเปคก่อนหน้านี้สำหรับเป็น ฉันได้เพิ่ม [a] spectest แล้วตอนนี้ก็มี ซึ่งหมายความว่าขณะนี้มีคำจำกัดความของสิ่งที่คาดว่าจะทำงานและ Inline :: Perl5 สามารถพึ่งพาได้

เนื่องจากพารามิเตอร์ที่ไม่รู้จักที่มีชื่อจะถูกละเว้น แต่:mixinไม่จำเป็นสำหรับรุ่น Rakudo รุ่นก่อนหน้าดังนั้นจึงเป็นไปได้ที่จะสร้าง Inline :: Perl5 รีลีสใหม่ที่สามารถทำงานกับเวอร์ชัน Rakudo ก่อนหน้านี้และรุ่นที่กำลังจะมาถึง กลับ compat

ฉันไม่คิดว่าจะมีวิธีใดที่จะทำให้ทุกอย่างทำงานได้ดีกับ Inline :: Perl5 รุ่นที่มีอยู่ ...

Niner:แต่น่าเสียดายที่ผ่าน:mixinไม่ได้ความช่วยเหลือในกรณีนี้เป็น rebless จะทำใน subclass Metamodel::Primitives.create_typeของหนึ่งที่สร้างขึ้นผ่านทาง Perl6::ClassHOWประเภทรองใช้ปกติ

ฉันกำลังทำงานกับ refactor รายใหญ่เพื่อกำจัดแฮ็คที่ไม่มี rebless ในตอนแรก ฉันกำลังเปิดปัญหานี้อีกครั้งเพื่อให้ตัวจัดการการเผยแพร่ทราบว่าไม่มีการทำงาน Inline :: Perl5 สำหรับผู้สมัครรุ่น rakudo

jnthn:คุณสร้างคลาสนั้นด้วย MOP หรือไม่? คุณสามารถผ่าน:is_mixinไปได้Perl6::ClassHOW.new_typeถ้าเป็นเช่นนั้น

niner:ไม่เป็นสำหรับสถานการณ์นี้:class Bar is Foo { }

ช่วยงานเอกสาร

ในความคิดเห็นด้านล่างคำตอบที่คุณเขียนนี้:

ฉันสามารถช่วยด้วยส่วนเอกสาร

ฟังดูแล้วว่าฉันชอบการตอบสนองที่เหมาะสมและมีประโยชน์ต่อปัญหาที่เป็นหัวใจของ SOQ ของคุณ ฉันหวังว่าเราโชคดีพอที่เรื่องนี้จะผ่านไป

ถ้านั่นช่วย

Imo การเขียนทางเทคนิคของคุณยอดเยี่ยมดังนั้นฉันหวังว่าผลลัพธ์สุดท้ายของคุณที่ทำงานร่วมกับผู้อื่นที่เกี่ยวข้องในการปรับปรุงนั้นจะเป็นสิ่งที่ยอดเยี่ยม

ข้อ จำกัด พื้นฐานเกี่ยวกับเนื้อหาของ docs.raku.org

ส่วนใหญ่ของเหตุผลที่ฉันเขียนส่วนที่เหลือของคำตอบที่กว้างขวางมากสำหรับคำถามที่ดูเหมือนง่าย ๆ นี้และเรียกคืนหลังจากเริ่มต้นเมื่อโจนาธานตอบมันก็คือการหารือเกี่ยวกับหลักการและการปฏิบัติของวิธีการTDDที่ทำงานภายใต้ ภาษาโปรแกรม Raku และส่วนที่เกี่ยวข้องเช่นคอมไพเลอร์ Rakudo และเนื้อหาdocs.raku.org

Aiui ความสัมพันธ์ที่พึงประสงค์ระหว่างวิธีที่สิ่งต่าง ๆ ควรทำงานใน Raku และวิธีที่พวกเขาทำงานจริง ๆ ใน Rakudo และสิ่งที่ควรบันทึกไว้ในdocs.raku.orgทำให้เดือดลงไปที่:

  • ทุกสิ่งจะต้องสันนิษฐานว่าเป็นตลอดไปภายใต้ลักษณะพื้นฐานของโครงการอาสาสมัคร และภายในข้อ จำกัด นั้น:

  • ควรมีการบันทึกพฤติกรรมในการคั่ว และพฤติกรรมอื่น ๆ ที่ไม่ควรใช้

(ได้รับเวลาอาสาสมัครที่สนใจและฉันทามติมีบางครั้งมีข้อยกเว้นสำหรับการบันทึกพฤติกรรมของ Rakudo QA'd อย่างถูกต้องที่ไม่ครอบคลุมโดยย่างในการปฏิบัติในปัจจุบันนี้ดูเหมือนว่าจะหมายถึงพฤติกรรมของรุ่น Rakudo ใน Rakudo ดาวปล่อย)

เอกสารที่ไร้ประโยชน์

เอกสารไม่เป็นประโยชน์

ฉันถือว่านี่เป็นความคิดเห็นที่ยุติธรรม ทุกสิ่งที่พิจารณาแล้วเอกสารประกอบเหมือนเดิมเมื่อคุณเขียนคำถามของคุณไม่เป็นประโยชน์

เอกสารไม่มีประโยชน์ [ในปี 2561]

นี่คือคำสั่งที่แตกต่างกันมาก

ไม่มีรายการที่ครอบคลุมย่างเป็นreblessในช่วงเวลานั้น

หากหน้า docs.raku.org บนrebless ได้อธิบายพฤติกรรมของมันเหมือนในปี 2018 แสดงว่ามันแย่กว่าไร้ประโยชน์เพราะจะแนะนำว่าพฤติกรรมปัจจุบันนั้นได้รับการสนับสนุนอย่างไม่ถูกต้อง ในความเป็นจริงมีขอบเขตสำหรับมันที่จะทำลายในรุ่นอนาคตของ Rakudo โดยไม่มีโอกาสที่เหมาะสมพฤติกรรมปี 2018 จะถูกเรียกคืนโดย devs หลัก และนี่ก็เกิดขึ้นจริง: พฤติกรรมที่ไม่ได้รับการสนับสนุนจากปี 2561 หยุดพักและไม่ได้รับสถานะ

ดังนั้นเมื่อได้รับฉันทามติเกี่ยวกับสิ่งที่อยู่ใน docs.raku.org และสิ่งที่ไม่ (ดูด้านบน) สิ่งที่มีประโยชน์ที่สุดที่reblessหน้าเว็บสามารถทำได้ก็คือไม่รวมเอกสารreblessเลยหรืออาจจะดีกว่าให้รวมหน้าไว้ด้วย ตรวจสอบให้แน่ใจว่าไม่ได้อธิบายพฤติกรรมของมัน สิ่งที่เป็นสถานการณ์: หน้าไม่อยู่; ไม่เป็นประโยชน์โดยตรง และนั่นคือเนื้อหาที่ดีกว่าไม่มีอะไร

(มันเป็นเรื่องง่ายที่จะจินตนาการถึงสิ่งต่าง ๆ ที่ดีขึ้นตัวอย่างเช่นถ้าหน้าเอกสารที่ทำหน้าที่รวมเปอร์เซ็นต์การบันทึกสถานะของการทดสอบครอบคลุมที่เกี่ยวข้องกับฟังก์ชันนั้นในเวอร์ชันของ Rakudo ใน Rakudo Star ล่าสุด 0% สามารถเบาะแสผู้อ่านได้ทันที ในการรับรู้ว่าฟังก์ชั่นนั้นไม่ได้ครอบคลุมด้วยการคั่วที่กล่าวว่าในขณะที่คุณลักษณะเอกสารนี้เป็นเรื่องง่ายที่จะจินตนาการใครจะนำไปใช้มันเป็นเรื่องง่ายที่จะจินตนาการว่ามันอาจใช้เวลาปีปฏิทินหรือมากกว่า และการทำงานร่วมกันเพื่อใช้ประโยชน์และปรับใช้ให้เป็นประโยชน์และชาวบ้านคิดว่าสิ่งอื่น ๆ มีความสำคัญมากกว่า)

มันใช้งานได้ ... ทันใดนั้นมันไม่ ... เอกสารประกอบ ... ควรบันทึกการโทร

มันทำงานได้

มันเป็น "โชค" มันใช้งานได้

ทันใดนั้นมันไม่ทำงานอีกต่อไป

เพราะ Rakudo ได้รับการปรับปรุง

เอกสาร ... ควรบันทึกการโทร

ตามที่อธิบายไว้ก่อนหน้านี้ aiui ความเห็นพ้องของชุมชนในปัจจุบันและ / หรือการปฏิบัติงานคือ: เอกสารที่ควรจัดทำเอกสารการโทรรุ่นเฉพาะคือพฤติกรรมการย่างสำหรับรุ่น Rakudo ใน Rakudo Star ล่าสุด; และพฤติกรรมของเอกสาร MAY ในเวอร์ชันอื่น

และไม่อ้างถึงอย่างอื่น

Aiui, ฉันทามติปัจจุบันและ / หรือการปฏิบัติงานคือสิ่งที่บางคนอาจคิดว่าการมีส่วนร่วมของเอกสาร "อ่อนแอ" เช่นเนื้อหาสั้น ๆ เป็นลายลักษณ์อักษรรีบและ / หรือการเชื่อมโยงนอกเอกสารที่อาจแนะนำถ้าอาสาสมัครรู้สึกว่าการเปลี่ยนแปลงทันที ความกังวลบางอย่างที่เกิดขึ้นโดยผู้ใช้ (เช่น SO นี้) และการทำให้การเปลี่ยนแปลง "อ่อนแอ" จะดีกว่าการไม่ทำอะไรเลย แน่นอนคุณสามารถทำ PR เพื่อปรับปรุง (หรือเปลี่ยนกลับหากคุณรู้สึกว่าการเปลี่ยนแปลงนั้น "อ่อนแอ" มันทำให้เรื่องแย่ลง)

การอ้างอิงถึงการเปลี่ยนแปลงในปี 2019.11 คือการหยุดนับ 7 เดือนโดยฉัน

(มันก็เป็นเช่นนั้นด้วยการนับของฉันเช่นกันแม้ว่าฉันจะเห็นคอมไพเลอร์ที่อ้างว่าเป็น 2019.03.1 โดยมีพฤติกรรมหยุดพักเหมือนกัน[3] )

ฉันคิดว่า JJ เปลี่ยนเอกสารและเขาเพิ่งตีความความคิดเห็นของ jnthn เกี่ยวกับวิธีปรับให้เข้ากับการเปลี่ยนแปลง ฉันคิดว่ามันดีกว่าไม่มีอะไร แต่หวังเป็นอย่างยิ่งว่าจะได้รับการอัปเดต :)

เชิงอรรถ

[1]ต่อไปนี้จะได้รับการกล่าวว่าไม่กี่นาทีหลังจากที่ลาร์รีได้ประกาศโครงการแรกที่นำไปสู่ Raku ใน2000 "รัฐของหัวหอม" ของเขาคำพูด :

คำถาม: [Raku] จะมีรายละเอียดหรือไม่

Larry: สิ่งที่เราต้องการเน้นเป็นพิเศษ ... อาจไม่มากนัก [การออกแบบภาษา] ในการพัฒนาแบบทดสอบการถดถอยปัจจุบันของเรา ... เป็นการทดสอบการตรวจสอบความถูกต้องของภาษาที่แท้จริงหมายถึงและออกไปสำรวจทุกซอกทุกมุม และ crannies แล้วพูดว่า“ นี่คือ [Raku] นี่ไม่ใช่ [Raku]” แล้วจริงๆแล้วเรามีสเปคที่เครื่องอ่านได้ และสำหรับฉันแล้วมันมีความสำคัญมากกว่าการใช้คำฟุ่มเฟือยในสิ่งที่มนุษย์อ่านได้

[2]แน่นอนการคั่วจะทำได้ดีสำหรับผู้ใช้ที่กำหนดหากการทดสอบนั้นครอบคลุมเพียงพอกับความต้องการของผู้ใช้ ปัญหาของ Arne แสดงให้เห็นว่าหลุมที่ครอบคลุมสามารถสร้างความประหลาดใจได้อย่างไร สำหรับการอภิปรายของหลุมเหล่านี้เป็นพวกเขายืนอยู่ในปี 2018 ให้ดูในรายละเอียด, รุ่นการเปลี่ยนแปลงและความเสียหาย ข่าวดีก็คือว่าการคั่วเป็นเพียงการทดสอบหน่วยจำนวนมากที่เขียนใน Raku เพื่อทดสอบว่าการแสดงออกหรือการสร้างที่มีค่าเฉพาะทำในสิ่งที่เฉพาะเจาะจง ดังนั้นจึงเป็นเรื่องง่ายสำหรับบุคคลหรือองค์กรที่จะมีส่วนร่วมในการทดสอบใหม่เพื่อปรับปรุงการครอบคลุมการทดสอบ และทั้งหมดนี้อยู่ภายใต้การควบคุมเวอร์ชัน (git) ดังนั้นแท็กดาวน์สตรีมที่กำหนดเองสาขาและส้อมจะทำงานได้อย่างยั่งยืนและสามารถจัดการได้ (อันที่จริงว่าเป็นวิธีใหม่รุ่นภาษา ( Christmas, Diwali, Eid(?) ฯลฯ ) มีการจัดการ.)

[3]ผมเคยเห็นความพยายามที่จะ rebless คลาสใหม่สร้างขึ้นโดยใช้ปกติnewclass is oldclassไวยากรณ์ทั้งการทำงาน (แล็ปท็อปของฉัน)และไม่ได้ทำงาน (ใน repl.it)2019.03.1โดยใช้คอมไพเลอร์ที่อ้างว่าเป็น (presumbly repl.it ติดตั้งรุ่นของซอร์สโค้ดคอมไพเลอร์หรือไบนารีที่คอมไพล์จากมันนำมาจากหัวหน้าต้นแบบหลังจากอัปเดตเวอร์ชันของคอมไพเลอร์2019.03.1แล้วด้วยการเปลี่ยนแปลงที่เกิดขึ้นฉันทราบว่า repl.it สวรรค์ ' ฉันไม่ได้เผยแพร่แบบออนไลน์ raku replic - ฉันค้นพบโดยไม่ได้ตั้งใจ - ดังนั้นจึงไม่มีอะไรที่ไม่ดีเลยเกี่ยวกับสถานการณ์นี้ แต่มันเสริมให้ฉันสำหรับความต้องการ$RAKU.compiler.verbose-configวิธีที่ใช้ในผลงานที่ส่งออก / เสียที่ฉันเพิ่งเชื่อมโยง)


ฉันพบบทความนี้เมื่อฉันพยายามหาวิธีการทำงานของ "rebless" เนื่องจากเอกสารไม่ได้ผล: stackoverflow.com/questions/44486985/ และมันก็ใช้งานได้ และทันใดนั้นมันก็ไม่ทำงานอีกต่อไปและเอกสารก็ยังคงไร้ประโยชน์ มันยังคงเป็นตามที่ควรบันทึกการโทรและไม่อ้างอิงถึงสิ่งอื่น และการอ้างอิงถึงการเปลี่ยนแปลงในปี 2019.11 นั้นนับจากฉันไป 7 เดือน
Arne Sommer

ฉันสามารถช่วยได้ในส่วนของเอกสารหากช่วยได้
Arne Sommer

@ArneSommer โปรดดูส่วนใหม่ในคำตอบของฉันเริ่มต้นด้วยการให้ความช่วยเหลือกับเอกสาร
raiph

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.