我已经安装了 Scala(在一台气隙 Linux 机器上,来自 scala3-3.3.1.tar.gz)。
我尝试运行一个简单的 Scala 程序,无需sbt. 所以我写了一个文件hello.scala
object Hello {
def main(args: Array[String]) = {
println("Hello, World")
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用
scala hello.scala
Run Code Online (Sandbox Code Playgroud)
这有效。:-)
但我浏览了 Scala 3 网站,看到了许多没有整个“对象包装”的代码示例。所以我希望写一个更简单的文件script.scala
scala hello.scala
Run Code Online (Sandbox Code Playgroud)
并运行它scala。但这不起作用:Scala 返回错误“顶级定义的非法开始”。
我怎样才能运行这个?我需要一些命令行选项吗?或者我需要吗scala-cli?(我读到scala已经成为或将成为scala-cli。)
我很困惑。在气隙机器上运行简单 Scala 脚本的最佳方法是什么?
我在https://cpp.sh/中尝试了以下操作。正如您所看到的,我没有找到跨编译器工作的单行示例。特别是,我想知道看似标准代码中的 MSVC 静态断言:
#include <barrier>
#include <functional>
class Class {
// missing template argument
// std::barrier my_barrier1;
// static assert N4861 in MSVC
// std::barrier<void(*)(void) noexcept> my_barrier2;
// static assert N4861 in MSVC
// std::barrier<std::function<void()>> my_barrier3;
// std::function does not like noexcept
// std::barrier<std::function<void() noexcept>> my_barrier3b;
// compiles in MSVC but not here
// std::barrier<std::_No_completion_function> my_barrier4;
// copied from MSVC - works in both
struct _No_completion_function {
void operator()() noexcept {}
};
std::barrier<_No_completion_function> my_barrier5;
};
int main() {
return …Run Code Online (Sandbox Code Playgroud) 我有一个程序也接受非英语字符作为输入字段。因为我们使用strlen,所以当存在非英文字符时,在计算字符串长度时,它无法给出预期的长度。对于输入nova,输出是4,而对于输入\xc3\xb1ova,输出是5,而输出应该是4。
strlen("nova")=4strlen("\xc3\xb1ova")=5在第二种情况下,我期望输出为4相反。
我有一个这样的代码。我正在启动它。我得到一个 ngrok 链接。
!pip install aiohttp pyngrok
import os
import asyncio
from aiohttp import ClientSession
# Set LD_LIBRARY_PATH so the system NVIDIA library becomes preferred
# over the built-in library. This is particularly important for
# Google Colab which installs older drivers
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})
async def run(cmd):
'''
run is a helper function to run subcommands asynchronously.
'''
print('>>> starting', *cmd)
p = await asyncio.subprocess.create_subprocess_exec(
*cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
async def pipe(lines):
async for line in lines:
print(line.strip().decode('utf-8'))
await asyncio.gather( …Run Code Online (Sandbox Code Playgroud) 我有一个后台线程执行任务,完成后,UI 应该更新。要更新 UI,我需要 UI 线程来执行我的函数,其中包含更新 UI 的代码。
Qt 有QMetaObject::invokeMethod((QObject *context, Functor function, Qt::ConnectionType type = Qt::AutoConnection, FunctorReturnType *ret = nullptr)方法。根据文档,Qt 在创建的线程中调用函子或函数上下文指针,但也可以使用 lambda 来实现(如下所示)。
// QtApplicationWrapper::sApp is of type QGuiApplication
// pFunc - pointer to a function
// pFuncParms - argument of type void *
QMetaObject::invokeMethod (QtApplicationWrapper::sApp,
[=] {
pFunc (pFuncParms);
},
Qt::QueuedConnection);
Run Code Online (Sandbox Code Playgroud)
上面的代码有效。但假设我不想使用 lambda 或函子。
pFunc 可以直接传递给 QMetaObject::invokeMethod ,如下所示:
QMetaObject::invokeMethod (QtApplicationWrapper::sApp,
pFunc,
Qt::QueuedConnection);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何传递参数。上面的代码仅适用于不带参数的函数。
如何在 UI 线程中调用 pFunc 及其参数?
在 C++ 中开发 ECS 实现时,我渴望可以简化这个表达式,但老实说,我对按位运算没有足够的信心来弄清楚:
(x & y) == x
Run Code Online (Sandbox Code Playgroud)
如果您有任何关于简化按位表达式的提示,那就太好了,谢谢
编辑:格式化
当我开始使用 Angular 时,我工作场所的某人告诉我在使用RxJs中的可观察量take(1)执行 API 调用时使用,声称它会在一次 API 调用后自动取消订阅。
所以我相信这个说法,并继续使用它,直到我发现组件加载时有大量渲染延迟,尤其是在页面之间导航时。
让我们看一下我的例子:
这是UserRepository与 API 对话以向应用程序授予权限的:
@Injectable({
providedIn: 'root'
})
export class UserRepository {
private apiUrl: string = environment.apiUrl;
constructor(private readonly httpRequestService: HttpRequestService) {
super();
}
@UnsubscribeOnDestroy()
getPermissions() {
return this.httpRequestService.get(`${this.apiUrl}/user/permissions`).pipe(map((res: any) => res.user));
}
}
Run Code Online (Sandbox Code Playgroud)
以及用法:
userRepository.getPermissions().pipe(take(1)).subscribe(data => ...);
Run Code Online (Sandbox Code Playgroud)
我在谷歌上搜索了一下,发现它take(1)不会自动取消订阅,而且根本不是目的,它所做的只是从管道中获取一个可观察值并忽略其余部分。
takeUntil一起使用来触发取消订阅unsubscriptionSubjectunsubscriptionSubject.nextngOnDestroyBaseRepository使用 的字典创建一个methodName => Subject,因此对于每个 API 调用,我可以保存它自己的主题,并创建一个装饰器,该装饰器会自动取消订阅先前的 API 调用,并确保不会有超过一个类型的订阅API 调用的。基础存储库 …
我目前正在一个学校项目中发现 shell 和 Bash。
我正在开发的函数需要使用 CSV 文件作为数据来计算每个司机的行程次数。
因此,它检查旅程的步骤是否确实是第一个步骤(第 2 列中的值 1),以使用 Awk 增加关联数组中驾驶员的旅程数。
在这个过程中,我创建了两个函数,我预计第二个函数会快得多,但事实恰恰相反。
我制作的第一个需要 1 秒来处理:
d1Flag()
{
grep ";1;" data/data.csv > temp/temp.csv
awk -F ';' '{ count[$6]++ }
END { for (i in count) print i" " count[i] }' temp/temp.csv > temp/temp2.csv
sort -k3,3 -rn temp/temp2.csv | head -n10
}
Run Code Online (Sandbox Code Playgroud)
我制作的第二个需要 6 秒来处理:
d1Flag()
{
awk -v OFS=';' -F';|\r' '$2==1 { journey_count[$6]++ }
END {for (driver in journey_count) print driver, journey_count[driver] } ' data/data.csv |
sort -t';' -nrk2,2 …Run Code Online (Sandbox Code Playgroud) 我有一个可以访问 API 的 Cypress 测试。返回一个项目列表,我希望它基本上进行轮询,直到我得到正确的原因(最多 30 次)。
返回的示例是
{
"items":[
{
"reason":"incorrect"
},
{
"reason":"correct"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有以下函数,如果返回正确的原因,它会轮询并返回响应。否则会抛出错误
function pollStatusReason(id, reason, attempts = 0) {
const url = `http://someurl/${id}`;
if (attempts > 30) throw `Too many attempts to get reason: ${reason}`;
return cy.request({
method: 'GET',
url: url,
}).then((response) => {
if (response.status != 200) {
pollStatusReason(id, reason, attempts + 1);
} else {
const items = response.body.items;
for (let i = 0; i < items.length; i++) {
if (items[i].reason …Run Code Online (Sandbox Code Playgroud) 这主要是一个关于 python 的问题:How x in [a, b, c]isvalued different from x in {a, b, c}.
我正在努力解决的上下文是这样的:
import polars as pl
s = pl.Series(["a", "b"], dtype=pl.Categorical)
s.dtype in [pl.Categorical, pl.Enum] # True
s.dtype in {pl.Categorical, pl.Enum} # False
s.dtype in {pl.Categorical: 1, pl.Enum: 2} # False
Run Code Online (Sandbox Code Playgroud)
我想更好地理解Python。我还想知道极地是否可以做任何事情来使第二种情况起作用,因为它目前看起来像一把步枪。