Ok I 100% don't know after trying this out :

my Buf $a = Buf.new(1,2,3);
my Blob $b = Blob.new(4,5,6);
$a ~= $b;
say $a

And it worked fine so... I dunno.


On Tue, 11 Feb 2020 at 11:00, Simon Proctor <simon.proc...@gmail.com> wrote:

> I think the problem is IO::Socket.read() returns a Blob not a Buf.
>
> ~ has a Buf, Buf variant :
> https://docs.raku.org/language/operators#infix_~
>
> But not a Blob one. Buf does Blob but not vice versa.
>
> I think you need to transform the output from .read into a Buf if you want
> to use the ~= how you want to.
>
> Would this work?
> my Blob $read = Buf.new;
> $read ~= Buf.new( $socket.read(1024) );
>
>
> On Tue, 11 Feb 2020 at 10:46, Kevin Pye <kevin....@gmail.com> wrote:
>
>>
>> ~ works fine for concatenating Bufs; For example:
>>
>> my $a = Buf.new(1,2,3);
>> my $b = $a ~ Buf.new(4,5,6)
>>
>> will assign correctly to $b.
>>
>> I can't work out what the problem is here, despite trying various
>> combinations. Perhaps socket isn't really returning a Blob?
>>
>> Kevin.
>>
>> On Tue, 11 Feb 2020 at 21:01, JJ Merelo <jjmer...@gmail.com> wrote:
>>
>>> You are using ~, which stringifies. Bufs are not strings: you need to
>>> decode them to concatenate it to a string. If what you want is to
>>> concatenate the buffer, probably ,= will work (not sure about this, would
>>> have to check), or any other operator that works on Positionals.
>>>
>>> JJ
>>>
>>> El mar., 11 feb. 2020 a las 10:56, David Santiago (<deman...@gmail.com>)
>>> escribió:
>>>
>>>> A 11 de fevereiro de 2020 10:47:34 CET, David Santiago <
>>>> deman...@gmail.com> escreveu:
>>>> >A 11 de fevereiro de 2020 09:46:06 CET, David Santiago <
>>>> deman...@gmail.com> escreveu:
>>>> >>
>>>> >>Hi!
>>>> >>
>>>> >>Can someone explain me why this doesn't work:
>>>> >>
>>>> >>my Blob $read;
>>>> >>$read ~= $socket.read(1024);
>>>> >>
>>>> >>Dies with error:
>>>> >>
>>>> >>X::Buf::AsStr: Cannot use a Buf as a string, but you called the
>>>> Stringy method on it
>>>> >>
>>>> >>This also doesn't work:
>>>> >>
>>>> >>my Buf $read;
>>>> >>$read ~= $socket.read(1024);
>>>> >>
>>>> >>Dies with the same error as above.
>>>> >>
>>>> >>
>>>> >>But this works?
>>>> >>
>>>> >>my Blob $read = Buf.new;
>>>> >>$read ~= $socket.read(1024);
>>>> >>
>>>> >>
>>>> >>Best regards,
>>>> >>David Santiago
>>>> >
>>>> >
>>>> >Hi!
>>>> >
>>>> >Can someone explain me why this doesn't work:
>>>> >
>>>> >my Blob $read;
>>>> >$read ~= $socket.read(1024);
>>>> >
>>>> >Dies with error:
>>>> >
>>>> >X::Buf::AsStr: Cannot use a Buf as a string, but you called the
>>>> Stringy method on it
>>>> >
>>>> >This also doesn't work:
>>>> >
>>>> >my Buf $read;
>>>> >$read ~= $socket.read(1024);
>>>> >
>>>> >Dies with the same error as above.
>>>> >
>>>> >
>>>> >But this works?
>>>> >
>>>> >my Blob $read = Buf.new;
>>>> >$read ~= $socket.read(1024);
>>>> >
>>>> >
>>>> >Best regards,
>>>> >David Santiago
>>>>
>>>>
>>>> Hi!
>>>>
>>>> Can someone explain me why this doesn't work:
>>>>
>>>> my Blob $read;
>>>> $read ~= $socket.read(1024);
>>>>
>>>> Dies with error:
>>>>
>>>> X::Buf::AsStr: Cannot use a Buf as a string, but you called the Stringy
>>>> method on it
>>>>
>>>> This also doesn't work:
>>>>
>>>> my Buf $read;
>>>> $read ~= $socket.read(1024);
>>>>
>>>> Dies with the same error as above.
>>>>
>>>>
>>>> But this works?
>>>>
>>>> my Blob $read = Buf.new;
>>>> $read ~= $socket.read(1024);
>>>>
>>>>
>>>> Best regards,
>>>> David Santiago
>>>>
>>>> --
>>>> Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>>
>>>
>>>
>>> --
>>> JJ
>>>
>>
>
> --
> Simon Proctor
> Cognoscite aliquid novum cotidie
>
> http://www.khanate.co.uk/
>


-- 
Simon Proctor
Cognoscite aliquid novum cotidie

http://www.khanate.co.uk/

Reply via email to