我甚至不知道它是否被称为别名,但无论如何让我继续.
你知道C#中的System.String类型是如何用"字符串"排序"别名"的?在Visual Studio中,"string"是小写和蓝色文本.我想对一些冗长的班级名字这样做.有些都像"RelocatedPlantProductReleaseItem".我无法更改它的名称,但这么长的名字确实使代码啰嗦.我希望能够使用"Rppr"代替.所以不是这样的:
RelocatedPlantProductReleaseItem Item = new RelocatedPlantProductReleaseItem();
我会像:
Rppr Item = new Rppr();
我知道我可以创建一个名为Rppr的类,并让它继承自RelocatedPlantProductReleaseItem,但这看起来很糟糕.
此外,我上面给出的场景完全是虚构的.我只是用它来演示我想要实现的基本功能.
另外,当"string"表示System.String时,技术上称之为什么?
更新:感谢所有答案,伙计们,但我想我应该指明我希望这是一个全球性的事情.我不想在每个代码文件的顶部指定它.我想在一个地方指定它,它在整个应用程序中的任何地方都可以工作,即使在引用其程序集的其他程序集中也是如此.
我在~/.bash_aliases远程ubuntu服务器上的文件中有别名.该文件以标准方式从文件加载~/.bashrc,如下所示:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
该~/.bashrc文件依次从~/.profile文件加载(也以标准方式),如下所示:
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
source ~/.bashrc
echo ".profile loaded .bashrc"
fi
fi
mesg n
Run Code Online (Sandbox Code Playgroud)
我发现我的别名在我的结构命令中不可用,例如当我在结构脚本中执行此操作时:
run("aliased_command")
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
run: aliased_command
out: .profile loaded .bashrc
out: /bin/bash: aliased_command: command not found
Fatal error: run() encountered an error (return code 127) while executing 'aliased_command'
Run Code Online (Sandbox Code Playgroud)
现在,我设法通过使用ssh登录到服务器并在运行:
~# /bin/bash -l -c aliased_command
Run Code Online (Sandbox Code Playgroud)
从shell(nb /bin/bash -l -c是结构的默认值,见这里)我得到相同的输出: …
我想知道是否有一种简单的方法来编写c ++类函数的别名.例如,如果我有一些list容器对象,那么逻辑函数就是
int list::length() { return len; }
Run Code Online (Sandbox Code Playgroud)
但程序员可能使用的另一个逻辑别名可能是
int list::size() { return len; }
Run Code Online (Sandbox Code Playgroud)
因此,有没有任何方法可以创建list::size()别名list::length(),使其在编译时不重复,而是引用相同的函数?
我已经读过你可以这样做了#define,但是我不想在某个地方完全超出范围的其他代码名称(即'size'变量)引起任何混淆.
我还读过函数指针可以修复它,但这不是一个别名(因为它必须应用去引用),也不能给函数指针一个声明,给用户一个令人困惑的帮助线(我想),加上混乱,如果我需要将我的代码嵌套在另一个对象中(我必须调整范围).
我的一个猜测是,大多数优化编译器将以下内容作为直接函数别名:
inline int list::length() { return len; }
inline int list::size() { return length(); }
Run Code Online (Sandbox Code Playgroud)
或者,c ++有任何严格的"别名"语法吗?(我找不到任何 - 不确定)
那么,这样做最有效的方法是什么?
编辑:我接受了答案只是为了结束这个问题,因为这只是我的一个好奇心.任何有良好信息的人,请添加评论或回答,我甚至可能会改变我的答案.
简短形式:如何在C++ 11中为根(全局)命名空间定义别名?它可能看起来像
namespace root_namespace = :: ;
上面的裸体形式的范围解析运算符是全局命名空间的某个句柄的占位符.我在GCC Internals Manual中读到了这一点
... [编译器]整个中间表示的根是变量global_namespace.这是::在C++源代码中指定的命名空间...全局命名空间的名称是::,即使在C++中,全局命名空间是未命名的.
PS EDIT:对于迄今为止的受访者,我添加了一个痛苦的长篇表来解决以下长篇形式后的一些问题,因为它可能会澄清一些事情.和追随者,如果你看到我们而不是彼此说话,那就深入挖掘.
长形式:其潜在用途的一个例子如下.如果不满意,那么是的,这是一个学术问题; 看到这个之后痛苦的长形.
想象一下,你的老板在一天内闯入并说:"我刚读了一本关于后实证主义的书.摆脱它namespace ObjectiveReality." 在下面的代码,你需要做的"一切"是忽略我喜欢标线/* -> */这样/* <- */.你可以为目前的中间嵌套级别做到这一点; 但是,我不确定如何定义全局范围namespace current_authority以允许简单地省略第一个非全局命名空间.
#include <iostream>
#include <iomanip>
// ...
using cat_is_alive = std::true_type ; // because I like cats
using cat_is_alive = ::cat_is_alive ; // seems to work, see `g++ -v` …Run Code Online (Sandbox Code Playgroud) 这个问题类似于我的问题: 有没有办法创建一个SQL"别名"?
但是不太一样 - 我正在学习mysql,并且我将使用不同的命令来运行select命令.有没有办法我可以别名的东西:
从testdb中选择*
至
LS
或类似的东西?理想情况下,我可以将"select*from"别名为"show",然后输入"show testdb".
我想写一些变量,比如
std::array<double, array_num> a;
Run Code Online (Sandbox Code Playgroud)
where array_num是const int表示数组的长度.但它很长,我想为它创建一个别名:
typedef std::array<double, array_num> my_array;
Run Code Online (Sandbox Code Playgroud)
这样对吗?我如何使用my_array像my_array<3>?
看看将当前用户的别名传递给sudo命令的方法,我在ArchWiki上找到了以下内容:
传递别名
如果您使用了很多别名,您可能已经注意到在使用sudo时它们不会转移到root帐户.但是,有一种简单的方法可以使它们工作.只需将以下内容添加到您
~/.bashrc或/etc/bash.bashrc:
alias sudo='sudo '
我不明白为什么会这样.如果shell不关心两个命令之间有多少空格,这怎么会有效?
手动添加空格时,我认为没有区别:
$ alias e=echo
$ sudo e foo
sudo: e: command not found
$ sudo e foo # Manual space addition
sudo: e: command not found # Fail
$ alias sudo="sudo " # Now with alias
$ sudo e foo
foo # Succeeds, but why?
Run Code Online (Sandbox Code Playgroud)
可见别名sudo到sudo + space以某种方式允许传递别名.这部作品zsh,bash并且sh,所以它不是一个特定的壳行为.
我正在尝试做一些非常类似于文档中的jquery路径示例的东西,但TS不断抛出TS2307(webpack编译正常):
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@client": [
"client",
],
"@suir": [
"../node_modules/semantic-ui-react/dist/commonjs", // not working
],
},
// …
},
"include": [
"*.d.ts",
"client/**/*",
"../node_modules/semantic-ui-react", // is this necessary?
],
Run Code Online (Sandbox Code Playgroud)
更改baseUrl到"."和更新includes,并paths没有什么区别(@client继续工作,@suir继续到不行).
更改"@suir"到"@suir/"或"@suir/*"(和附加/*到它的价值)也没有什么区别.
我这样做的原因是为了简化我的导入(我明确指定它们而不是从捆绑中提取命名导出以减少我的供应商包大小 - 节省大约1 MB):
import Button from 'semantic-ui-react/dist/commonjs/elements/Button'; // works
import Button from '@suir/elements/Button'; // not found
Run Code Online (Sandbox Code Playgroud) 我从参考注释中找到了以下查询,我可以看到将lineitem表命名为l1并将lineitem表命名为l2。
select avg(l_extendedprice) from lineitem l1
where l_extendedprice =
(select min(l_extendedprice) from lineitem l2
where l1.l_orderkey = l2.l_orderkey);
Run Code Online (Sandbox Code Playgroud)
这是一个有效的别名方法,无需显式使用AS?如果这不是 Postgres 中的别名,那么这个约定是什么?
我有一个使用node.js v16的项目,越来越多的npm库不再与require兼容,需要与import一起使用。
到目前为止,我一直在使用 package.json 将我的根目录作为别名
// package.json
"dependencies": {
"~src": "file:.",
}
Run Code Online (Sandbox Code Playgroud)
在我的源代码中
const someCode = require('~src/absolute/path/someCode');
Run Code Online (Sandbox Code Playgroud)
这不适用于导入,并且通过我所做的测试,我还没有找到任何解决方案使其适用于导入。
你已经遇到过这样的问题吗?并找到了解决方案?