我有这个;
multi sub infix:<+> ( Measure:D $left, Measure:D $right ) is equiv( &infix:<+> ) is export {
my ( $result, $argument ) = inf-prep( $left, $right );
return $result.add( $argument );
}
multi sub infix:<+> ( Measure:D $left, $right ) is equiv( &infix:<+> ) is export {
my ( $result, $argument ) = inf-prep( $left, $right );
return $result.add( $argument );
}
multi sub infix:<+> ( $left, Measure:D $right ) is equiv( &infix:<+> ) is export {
my ( $result, …Run Code Online (Sandbox Code Playgroud) 我正在 Rust 中为 Polars 编写一个外部库(供Raku::Dan使用),并且想通过调用 df.lazy() 为 LazyFrame 对象获取一个不透明容器。
use polars::prelude::*;//{CsvReader, DataType, DataFrame, Series};
use polars::prelude::{Result as PolarResult};
use polars_lazy::prelude::*;
// LazyFrame Container
pub struct LazyFrameC {
lf: LazyFrame,
}
impl LazyFrameC {
fn new(ptr: *mut DataFrameC) -> LazyFrameC {
LazyFrameC {
lf: (*ptr).df.lazy(),
}
}
}
// extern functions for LazyFrame Container
#[no_mangle]
pub extern "C" fn lf_new(ptr: *mut DataFrameC) -> *mut LazyFrameC {
let df_c = unsafe {
assert!(!ptr.is_null());
&mut *ptr
};
Box::into_raw(Box::new(LazyFrameC::new(ptr)))
}
Run Code Online (Sandbox Code Playgroud)
不起作用,给出错误:
error[E0599]: …Run Code Online (Sandbox Code Playgroud) 要将例如mins-2拆分为单位名称和顺序的组成部分,这就是我想要的
sub split-order ( $string ) {
my Str $i-s = '1';
$string ~~ / ( <-[\-\d]>+ ) ( \-?\d? ) /;
$i-s = "$1" if $1 ne '';
return( "$0", +"$i-s".Int );
}
Run Code Online (Sandbox Code Playgroud)
似乎perl6应该能够将其打包成更加简洁的措辞.我需要默认顺序为1,其中没有尾随数字.
我可能有点懒,不与行结尾匹配$.试图避免返回Nil,因为这对调用者没用.
任何有更好转变的人?
我试图实现对perl6 Class属性的写访问的触发器.我无法弄清楚错误的原因......
...我从如何在Perl6中编写自定义访问器方法获得了这个概念?
1 #!/usr/bin/env perl6
2
3 class MeasureSP {
4
5 has Real $!value;
6 has Str $.units;
7
8 submethod BUILD( :$!value, :$!units ) {}
9
10 method value( Real $newval? ) is rw {
11 return Proxy.new:
12 FETCH => sub ($) { $!value },
13 STORE => sub ($, $newval) { $!value = $newval },
14 }
15
16 }
17 my MeasureSP $m-sp = MeasureSP.new( value => 23, units => 'metres' …Run Code Online (Sandbox Code Playgroud) 我正在尝试重构一些代码。我的方法(使用vi)是将旧库从/ lib复制到/ lib2。这样,我可以破解大部分内容,但仍然有一个重构框架。
所以我继续将mymain.p6标头从更改use lib '../lib';为use lib '../lib2';。然后我删除其中的几行,../lib2/mylibrary.pm6并确保:w正在执行我所期望的。
想象一下,尽管我的程序尽管已被大量删除,但仍然可以正常运行,但我感到惊讶。当我rm -R / lib时它甚至可以工作,所以那里的任何东西都没有持久。
我有机会躺在旧的lib模块的precomp周围吗?如果是这样,我怎么冲洗它?
这是基于实现Perl 6.d的MoarVM版本2019.03构建的Rakudo Star版本2019.03.1。
这是对Baggy add (+) work on MixHash weights的(有点迟到的)跟进吗?. MixHash 是一个很好的单位比较工具 - 因为我知道我的 dmix => ("m"=>2,"kg"=>1,"s"=>-2).MixHash 对于 'kg m2 per s2' 和 'kg.m^2/s^2' 等等。
这是我寻求的三重清晰度:
让我知道我是否可以提供代码或应该提交错误报告...
在围绕这个问题进行测试时,raku 可以避免这种格式错误的 UTF-8 错误吗?有人建议我尝试使用内置的 MacOS 'find '。带有 raku 运行功能的命令。
1 #!/usr/local/bin/raku
2
3 shell('find .'); #works
4
5 my $proc = run('find .', :out); #fails with
6 $proc.out.lines(:close).say; #() [ie. ().Seq]
Run Code Online (Sandbox Code Playgroud)
结果证明 raku shell 工作正常,但 raku run 失败。我不完全确定这是否是 MacOS 上 raku 的错误(如果是,我很乐意报告)......?
[MacOS Catalina 10.15.17 ... 欢迎来到™ v2020.10。实现™ 编程语言 v6.d。基于 MoarVM 版本 2020.10。]
我从之前的SO 中取得了一些进展,但遇到了一个新错误......
Internal error. Please refer to http://jb.gg/ide/critical-startup-errors
java.lang.ExceptionInInitializerError
at com.intellij.ide.IdeEventQueue.<clinit>(IdeEventQueue.java:80)
at com.intellij.idea.StartupUtil.replaceSystemEventQueue(StartupUtil.java:749)
at com.intellij.idea.StartupUtil.patchSystem(StartupUtil.java:733)
at com.intellij.idea.ApplicationLoader.executeInitAppInEdt(ApplicationLoader.kt:59)
at com.intellij.idea.ApplicationLoader.access$executeInitAppInEdt(ApplicationLoader.kt:1)
at com.intellij.idea.ApplicationLoader$initApplication$1$1.run(ApplicationLoader.kt:366)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.Runnable java.awt.event.InvocationEvent.runnable accessible: module java.desktop does not "opens java.awt.event" to unnamed module @5fdea98c
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
at com.intellij.util.ReflectionUtil.findFieldInHierarchy(ReflectionUtil.java:153) …Run Code Online (Sandbox Code Playgroud) 根据Rust FFI Omnibus,以下内容应该有效。
\n这是一个名为“foo”的 Rust cdylib,lib.rs用 Cargo build 制作...
use std::convert::From;\n\n// Rust FFI Omnibus: Tuples \n// http://jakegoulding.com/rust-ffi-omnibus/tuples/\n\n// A Rust function that accepts a tuple\nfn flip_things_around_rust(tup: (u32, u32)) -> (u32, u32) {\n let (a, b) = tup;\n (b + 1, a - 1)\n}\n\n// A struct that can be passed between C and Rust\n#[repr(C)]\npub struct Tuple {\n x: u32,\n y: u32,\n}\n\n// Conversion functions\nimpl From<(u32, u32)> for Tuple {\n fn from(tup: (u32, u32)) -> Tuple {\n Tuple …Run Code Online (Sandbox Code Playgroud) 下面是我的代码的最小(?)可重现示例。这是 WIP Raku 模块 Dan::Polars 压力测试/基准测试的第一步。
\n在 Rust 中,我用这段代码创建了一个 libmre.so
\n 1 use libc::c_char;\n 2 use libc::size_t;\n 3 use std::slice;\n 4 use std::ffi::*; //{CStr, CString,}\n 5 \n 6 // Container\n 7 \n 8 pub struct VecC {\n 9 ve: Vec::<String>,\n 10 } \n 11 \n 12 impl VecC {\n 13 fn new(data: Vec::<String>) -> VecC \n 14 { \n 15 VecC {\n 16 ve: data,\n 17 } \n 18 } \n 19 \n 20 fn show(&self) {\n 21 println!{"{:?}", …Run Code Online (Sandbox Code Playgroud)