Re: I need sub returns help
[email protected] (yary) Sun, 2 Nov 2025 14:47:46 -0500
| Newsgroups | perl.perl6.users |
|---|---|
| Message-ID | <CAG2CFAbuyCf9e9UMhoXus=oAJ+mRLEqptARPVdWbUZe8ZrEYSw@mail.gmail.com> |
This got me thinking, "If Raku had a Tuple type, that would be good for
this- maybe -"
and then I noticed https://raku.land/zef:lizmat/Tuple - a module that
provides Tuples
"- if we can declare the types of elements of a tuple, in a signature."
- well maybe here we hit the same issue as originally, since we can't
declare mixed types for an Array, nor any types for a List, perhaps we
can't do that for a Tuple either? And now I'm half-remembering a discussion
about this maybe 6+ years ago?
Searching for that got me looking at something related, Signature Literals,
https://docs.raku.org/language/signatures
etc... I'm not on a machine where I can test this, I imagine it doesn't
work, and there is already the already-working "MyPair" solution above.
still here is where I was going-
use Tuple;
sub x(--> Tuple[Bool,Str]) {
my Str $s = "hello";
my Bool $b = True;
tuple($b, $s);
}
say x;
-y
On Mon, Oct 27, 2025 at 11:57 AM William Michels <[email protected]>
wrote:
> Wow Tom!
>
> I had to correct one line (`my Str $s = "foo";`),
>
> then got this return:
>
> `MyPair.new(b => Bool::True, s => "foo")`
>
> Very cool!
>
> Best, Bill.
>
> On Oct 27, 2025, at 07:02, Tom Browder <[email protected]> wrote:
>
> I don't think you can do what you want exactly. But I certainly may be
> wrong!
>
> Using a pair may do the trick, but my Pair foo outside a Hash is weak.
>
> The other way around it is to do something like this I use often:
>
> class MyPair {
> has Bool $.b;
> has Str $.s;
> }
>
> sub x(--> MyPair) {
> my Bool $b = True;
> my Str = "foo";
> my $obj = MyPair.new(:$b,:$s);
> $obj;
> }
>
> say x; # OUTPUT
>
> On Mon, Oct 27, 2025 at 05:34 ToddAndMargo via perl6-users <
> [email protected]> wrote:
>
>> On 10/27/25 3:13 AM, Tom Browder wrote:
>> > On Sun, Oct 26, 2025 at 19:46 ToddAndMargo via perl6-users <perl6-
>> > [email protected] <mailto:[email protected]>> wrote:
>> >
>> > Hi All,
>> >
>> > What am I doing wrong here? I want
>> > two things in my "returns".
>> >
>> >
>> > [2] > sub x() returns Bool,Str {}
>> > ===SORRY!=== Error while compiling:
>> > Missing block
>> > ------> sub x() returns Bool⏏,Str {}
>> > expecting any of:
>> > new name to be defined
>> >
>> > Yours in confusion,
>> > -T
>> >
>> >
>> > Return a List of a defined Bool and Str:
>> >
>> > sub x(--> List) {
>> > my Str $s = "hello";
>> > my Bool $b = True;
>> > $b, $s;
>> > }
>> >
>> > say x;
>> > OUTPUT: (True hello)
>> >
>> > -Tom
>>
>> Hi Tom,
>>
>> Dang. List does not tell me what they are.
>>
>> Thank you for the help.
>>
>> -T
>>
>
>