clang-format有很多关于空白的配置选项,还有一些关于代码顺序(包括的顺序).是否可以重新排序const限定符,以便将它们放在相应类型的右侧?
示例:声明const int x = 0;应格式化为int const x = 0;.
在 Blazor 服务器组件中,我用于OnInitializedAsync()连接来自注入服务的事件:
protected override async Task OnInitializedAsync()
{
_fooRepository.SomethingChanged += OnSomethingChanged;
await Refresh();
}
public void Dispose()
{
_fooRepository.SomethingChanged -= OnSomethingChanged;
}
private async Task Refresh()
{
this.FooData = await LoadDataFromRepository();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,根据文档,该OnInitializedAsync方法可能会被调用两次,具体取决于渲染模式。
我发现了一些建议使用OnAfterRenderAsync初始化逻辑的示例:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
_fooRepository.SomethingChanged += OnSomethingChanged;
await Refresh();
}
}
[... Dispose and Refresh as above... ]
Run Code Online (Sandbox Code Playgroud)
OnAfterRenderAsync使用代替时有缺点吗OnInitializedAsync?在我看来,我应该放弃OnInitializedAsync并默认OnAfterRenderAsync。
我目前正在开发一个使用cython和的python包,numpy并且我希望使用pip install干净的python安装中的命令来安装包.应自动安装所有依赖项.我正在使用setuptools以下内容setup.py:
import setuptools
my_c_lib_ext = setuptools.Extension(
name="my_c_lib",
sources=["my_c_lib/some_file.pyx"]
)
setuptools.setup(
name="my_lib",
version="0.0.1",
author="Me",
author_email="me@myself.com",
description="Some python library",
packages=["my_lib"],
ext_modules=[my_c_lib_ext],
setup_requires=["cython >= 0.29"],
install_requires=["numpy >= 1.15"],
classifiers=[
"Programming Language :: Python :: 3",
"Operating System :: OS Independent"
]
)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一点很有效.该pip install命令下载cython了该构建,并能够构建我的包并与其一起安装numpy.
现在我想提高cython代码的性能,这会导致我的代码发生一些变化setup.py.我需要添加include_dirs=[numpy.get_include()]调用setuptools.Extension(...)或setuptools.setup(...)哪些意味着我还需要import numpy.(请参阅http://docs.cython.org/en/latest/src/tutorial/numpy.html并让distutils在正确的位置查找numpy头文件.)
这是不好的.现在用户无法pip install从干净的环境中调用,因为 …
我目前正在设计一个API,我不确定我的功能是否应该采用shared_ptr或weak_ptr.有些小部件包含查看器.观众具有add_painter向观众添加画家的功能.当观众需要重绘时,它会使用画家绘制缓冲区并显示结果.我得出结论,观众应该使用weak_ptr以下方式来控制画家:
remove_painter函数.可能有不同类型的查看者,因此它们隐藏在界面后面.什么签名最适合add_painter界面中的功能?
我应该直接使用void add_painter(weak_ptr<Painter> const& p)吗?这意味着具体的实现存储画家使用weak_ptr,但我不能强制执行:实现可以只做painters.push_back(weak_ptr.lock())和存储shared_ptr.
我应该用void add_painter(shared_ptr<Painter> const& p)吗?这意味着观众拥有强大的引用,因此删除画家不一定会将其从观看者中删除.
我还考虑将画家直接存储在接口类中,但是它不再是真正的接口,是吗?
使用外部库时,您通常必须决定是使用库的静态版本还是动态版本。通常,您不能交换它们:如果库是作为动态库构建的,则不能针对它进行静态链接。
为什么会这样?
示例:我正在 Windows 上构建一个 C++ 程序并使用一个库,该库.lib为链接器提供一个小文件和一个.dll在运行我的可执行文件时必须存在的大文件。如果.dll运行时可以解析里面的库代码,那为什么不能在编译时解析,直接放到我的可执行文件中呢?
在C++ 11中,您可以std::vector::push_back结合使用,std::move以便在将元素插入向量时避免复制.标准中是否有一节禁止编译器std::move自动使用调用后未使用的局部变量push_back?当填充具有大元素的向量时,这可以是巨大的性能益处.
我使用gcc 7.1.0检查了以下代码,并且在版本2打印时打印-O3了版本1 .movecopy
#include <iostream>
#include <string>
#include <vector>
struct S
{
S() = default;
S(S const&) { std::cout << "copy" << std::endl; }
S(S &&) { std::cout << "move" << std::endl; }
std::string a;
std::string b;
};
void fill_members(S& s) { /*...*/ }
int main()
{
std::vector<S> v;
{
S s;
// Somehow fill members of s, maybe use a function call for that.
fill_members(s); …Run Code Online (Sandbox Code Playgroud) 有没有办法..从批处理中解析绝对文件路径?例如,应输出以下批处理脚本C:\Users\xyz\other\abc.txt:
REM Project dir is an absolute path, for example, C:\Users\xyz\project\
SET projectDir=%~1
REM Target file is a path relative to the project dir, for example, ..\other\abc.txt
SET target=%~2
REM Concatenate paths. This becomes C:\Users\xyz\project\..\other\abc.txt
SET absoluteTarget=%projectDir%%target%
SET absoluteTargetClean=...
echo %absoluteTargetClean%
Run Code Online (Sandbox Code Playgroud)
的absoluteTarget变量是指已存在的文件.
我需要相同的目录而不是文件.你能用同样的方法来实现吗?
c++ ×3
batch-file ×1
blazor ×1
c# ×1
c++11 ×1
clang-format ×1
cython ×1
numpy ×1
python-3.x ×1
setuptools ×1
shared-ptr ×1
stdvector ×1
weak-ptr ×1
windows ×1