值一千字:
#include<string>
#include<iostream>
class SayWhat {
public:
SayWhat& operator[](const std::string& s) {
std::cout<<"here\n"; // To make sure we fail on function entry
std::cout<<s<<"\n";
return *this;
}
};
int main() {
SayWhat ohNo;
// ohNo[1]; // Does not compile. Logic prevails.
ohNo[0]; // you didn't! this compiles.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将数字0传递给接受字符串的方括号运算符时,编译器不会抱怨。相反,它会在输入以下方法之前编译并失败:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Run Code Online (Sandbox Code Playgroud)
以供参考:
> g++ -std=c++17 -O3 -Wall -Werror -pedantic test.cpp -o test && ./test
> g++ --version
gcc …Run Code Online (Sandbox Code Playgroud) 有些用法|看起来更像函数管道或链接,而不是按位或,与 c++20 范围结合使用。像:
#include <ranges>
#include <vector>
template<typename T>
std::vector<T> square_vector(const std::vector<T> &some_vector) {
auto result = some_vector | std::views::transform([](T x){ return x*x; };
return {result.begin(), result.end()};
}
Run Code Online (Sandbox Code Playgroud)
显然,该|运算符不是按照通常意义上的按位或来使用的。它从什么时候开始工作,在什么类型的函数/对象上工作?这些像常规视图吗?有哪些注意事项?
我几天前才了解Julia 中的链接函数(如管道) 。今天我尝试了一些事情并得到了意想不到的结果。因此,我决定更好地询问问题的根源,以更好地理解 Julia 在链接函数中的行为。考虑这个例子:
\njulia> a = [1 2 3]\n1\xc3\x973 Matrix{Int64}:\n 1 2 3\nRun Code Online (Sandbox Code Playgroud)\n然后我想链接一些像下面这样的函数,毕竟我想要整个矩阵的最大值:
\njulia> a .|> x->x^2 .|> sqrt .|> Int64 |> maximum\n1\xc3\x973 Matrix{Int64}:\n 1 2 3\nRun Code Online (Sandbox Code Playgroud)\n但我期望只有一个3!为什么 Julia 不考虑链的最后一个函数,即函数maximum?
PS:另外,我也尝试过这样的方法:
\njulia> a .|> x->x^2 .|> sqrt .|> Int64 |> x->maximum(x)\n1\xc3\x973 Matrix{Int64}:\n 1 2 3\nRun Code Online (Sandbox Code Playgroud)\n仍然不是我所期望的那样。
\n我有代码可以轻松地自动处理着色和绘制多个图(对我来说)。我想让注释变得更容易:
目标:如果注释 xy 与前一个注释冲突,请向上移动 - 直到与其他注释不发生冲突。
如果有一个功能已经能够做到这一点那将是一个梦想,但我找不到。
否则 - 列出注释并在坐标系中获取其边界框的最佳方法是什么?
我有一个自动着色代码,如下所示:
if chain:
children = []
for child in Iplot.axes.get_children():
if (type(child) is not matplotlib.collections.PathCollection and
type(child) is not matplotlib.lines.Line2D):
continue
children.append(child)
col_step = 1.0/(len(children)+len(args))
for child in children:
child.set_color([Iplot.col,0,1-Iplot.col])
Iplot.col += col_step
Run Code Online (Sandbox Code Playgroud)
我可以对注释做类似的事情(更改 if 语句和第二个循环的主体),但是 1)我不喜欢这段代码 2)我希望存在更优雅的东西。
继
sudo apt-get install rabbitmq-server
Run Code Online (Sandbox Code Playgroud)
当服务尝试启动时(也在使用systemctl start)时遇到错误:
? rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2017-07-26 15:59:41 IDT; 4min 28s ago
Process: 17895 ExecStartPost=/usr/lib/rabbitmq/bin/rabbitmq-server-wait (code=exited, status=70)
Process: 17894 ExecStart=/usr/sbin/rabbitmq-server (code=exited, status=1/FAILURE)
Main PID: 17894 (code=exited, status=1/FAILURE)
Run Code Online (Sandbox Code Playgroud)
那在systemctl status. 在journalctl -xe:
-- Unit rabbitmq-server.service has begun starting up.
Jul 26 15:59:37 myhost rabbitmq[17895]: Waiting for rabbit@myhost ...
Jul 26 15:59:37 myhost rabbitmq[17895]: pid is …Run Code Online (Sandbox Code Playgroud) 我有一个try:finally必须始终执行(无论是否异常)的块,除非发生特定的异常。为了论证,我们假设它是一个ValueError,所以我问我是否可以实现:
try:
stuff()
except Exception as e:
if type(e) is ValueError: raise
#do important stuff
raise
#do important stuff
Run Code Online (Sandbox Code Playgroud)
以一种更优雅的方式跳过复制粘贴#importantstuff。如果我统治Python,它将看起来像:
try:
stuff()
finally except ValueError:
#do important stuff
Run Code Online (Sandbox Code Playgroud)
把#importantstuff一个函数是不是一个答案,但不可能IS。
我正在尝试删除文件.来自tcl脚本的vcd扩展.但我得文件名太长错误.我试过了puts [file delete [glob *.vcd]].这样做的正确方法是什么?
我正在研究Ruby课程,在运行其中一个示例时遇到了错误.这是我的Ruby类:
require 'json'
class User
attr_accessor :email, :name, :permissions
def initialize(*args)
@email = args[0]
@name = args[1]
@permissions = User.permisisons_from_template
end
def self.permisisons_from_template
file = File.read 'user_permissions_template.json'
JSON.load(file, nil, symbolize_names: true)
end
def save
self_json = {email: @email, name: @name, permissions: @permissions}.to_json
open('users.json', 'a') do |file|
file.puts self_json
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的跑步者文件代码如下所示:
require 'pp'
require_relative 'user'
user = User.new 'john.doe@example.com', 'John Doe'
pp user
user.save
Run Code Online (Sandbox Code Playgroud)
运行此命令"ruby runner.rb"时出现此错误:
/usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/json/common.rb:156:in `initialize': options :symbolize_names and :create_additions cannot be used in conjunction (ArgumentError)
from …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法将“点击”事件添加到注释中matplotlib.pyplot以销毁它。相关代码:
import matplotlib.pyplot as plt
plt.ion()
plt.plot()
plt.annotate("Kill me",xy=(0,0))
Run Code Online (Sandbox Code Playgroud)
现在我们需要找到注解,一种方法是迭代:
plt.gca().texts
Run Code Online (Sandbox Code Playgroud)
虽然可能有更好的方法。到目前为止,我还没有找到如何使用此获取小部件/添加事件。这是可能使用mpl_connect的的plt数字画布,但我不知道,这将需要边框,我想尽量避免前往,但如果没有其他的解决方案是可用的罚款。
为了结帐/差异/阶段等目的,我想完全忽略一些行:
set(ROOT /path/to/something/name_suffix)
set(ROOT /path/to/something/othername_suffix)
Run Code Online (Sandbox Code Playgroud)
偶尔(但并非总是)我会把它作为
set(ROOT /some/other/private/path/name)
set(ROOT /some/other/private/path/othername)
Run Code Online (Sandbox Code Playgroud)
忽略的意思是:
我拥有的:
Git 过滤器会弄脏我的私人路径 - 问题是如果我有原始行,在签出时它将恢复到我更改的行(带有个人路径):
smudge = "sed 's#set\\(ROOT\\) .*/\\([a-z]*\\).*)#\\1 /some/other/private/path/\\2)#'"
Run Code Online (Sandbox Code Playgroud)
我还没有实现 git clean ,因为我目前看到的唯一方法是硬编码原始后缀的脚本或分析git diff以查看最初提交的内容的脚本(问题是_suffix,我不知道工作树中的内容。原始路径可以硬编码,不会改变),并将其替换为索引的内容。我不希望我的私人路径包含_suffix目录。
这里有两件事:
我正在寻找一种方法来检测 Python Tkinter 网格中当前可见的标签。我在谈论
L=Label(someFrame)
L1=Label(someFrame)
L.grid(row=1,column=1)
L1.grid(row=2,column=1)
L1.grid_remove()
Run Code Online (Sandbox Code Playgroud)
无论如何,是否可以将 L1 与 L 区分开来?我正在 Tkinter 中寻找一些东西,而不是自己管理列表。可能访问网格管理器并查看是否有标签?
我正在寻找优雅的解决方案:
x = {}
x['key'] = 'something'
...
...
for i in someKeyList:
if i in x: raise KeyError('Enforcing single assign') #Happens for i == 'key' for example
x[i] = 'else'
Run Code Online (Sandbox Code Playgroud)
基本上我想要一个字典,其中分配给现有密钥会引发错误.我目前实现了一个UserDict,但这些比内置的慢.但我正在寻找内置或至少在常见模块中的东西.
XY:这是对存在的哈希检查,我需要O(1)查找和插入.
注意
我想要的字典不是一成不变的(是可变的......).您可以添加,删除或执行任何操作.唯一的区别是为现有值赋值会引发错误.
python ×4
c++ ×2
matplotlib ×2
annotations ×1
c++20 ×1
debian ×1
delete-file ×1
dictionary ×1
git ×1
julia ×1
linux ×1
rabbitmq ×1
ruby ×1
std ×1
std-ranges ×1
string ×1
tcl ×1
text ×1
tkinter ×1