我正在写记录器文件。我更喜欢在那里使用宏__FUNCTION__。我不喜欢这样的方式:
Logger.write("Message", __FUNCTION__);
Run Code Online (Sandbox Code Playgroud)
也许,有可能做这样的事情:
void write(const string &message, string functionName = __FUNCTION__)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果没有,有没有什么方法可以不用手来做这些事情(我的意思是传递函数名)?
我有一个包含许多列的 SQL 视图。ID(地块 ID)例如:7465-85-7468 建筑物(如果需要特定建筑物的 ID)例如:102 房间(如果需要特定房间的 ID)例如:0023
我每行都有一个 ID,但对于大多数行,没有建筑物 ID 或房间 ID
我想用 '000' 来填充空白行以表示建筑,用 '0000' 来表示房间。
我可以将这些字段合并到第四个字段中(完整 ID)
它尝试使用“ISNULL”获取默认值,但没有成功。
现在,我有这样的东西
ID / 建筑物 / 房间 / 完整 ID
7848-05-6956 / / / 7848-05-6956--
6985-26-7485 / 102 / 0000 / 6985-26-7485-102-0000
7236-12-0145 / / 0223 / 7236-12-0145--0223
我需要这个
ID / 建筑物 / 房间 / 完整 ID
7848-05-6956 / 000 / 0000 / 7848-05-6956-000-0000
6985-26-7485 / 102 / 0000 / 6985-26-7485-102-0000
7236-12-0145 / 000 / 0223 / 7236-12-0145-000-0223
默认成员初始化需要引用现有的构造函数,无论它是否被使用过。因此,查看一个Foo没有默认构造函数的结构:
struct Foo{
Foo(int x) : x_(x){}
int x_;
};
Run Code Online (Sandbox Code Playgroud)
很明显,以下内容不起作用,并导致编译错误:
class Bar0{
Foo foo = Foo(); #constructor Foo() doesn't exist
Bar0() : foo(0){}
}
Run Code Online (Sandbox Code Playgroud)
但是,它是一个不同的故事std::unique_ptr和std::make_unique:
class Bar1{
unique_ptr<Foo> foo = make_unique<Foo>(); #compiler doesn't complain
Bar1() : foo(make_unique<Foo>(0)){}
}
Run Code Online (Sandbox Code Playgroud)
这是令人费解的,因为只要Bar1包含一个foo不在初始化列表中的构造函数,编译就会失败。
我可以确认这对 MSVC12 来说是正确的。可能是编译器错误吗?
在 Java 8default中引入了方法实现。我的问题是为什么需要default在方法名称/签名中有关键字。为什么不能default像通常的方法实现一样没有关键字?
我有一张<p-table>桌子sortMode="multiple"。我想在页面首次显示时指定两列作为默认排序。如果我设置 sortMode="single",它可以通过指定 sortField="year" [sortOrder]="-1" 选项来工作(例如,标题显示为选中状态,列已排序)。多列相当于什么?
类似的示例代码(取自https://www.primefaces.org/primeng/showcase/#/table/sort)
<h3>Multi Sort with MetaKey</h3>
<p-table [columns]="cols" [value]="cars2" sortMode="multiple">
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns" [pSortableColumn]="col.field">
{{col.header}}
<p-sortIcon [field]="col.field"></p-sortIcon>
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns">
<tr>
<td *ngFor="let col of columns">
{{rowData[col.field]}}
</td>
</tr>
</ng-template>
</p-table>
Run Code Online (Sandbox Code Playgroud)
export class TableSortDemo implements OnInit {
cars1: Car[];
cars2: Car[];
cars3: Car[];
cols: any[];
constructor(private carService: CarService) { }
ngOnInit() {
this.carService.getCarsSmall().then(cars => this.cars1 = cars);
this.carService.getCarsSmall().then(cars => this.cars2 …Run Code Online (Sandbox Code Playgroud) 什么是java中引用变量的默认值(比如它对于原始int等是0)而且当(或如何)是指定NO VALUE的引用变量时,它何时被赋值为THE VALUE"NULL"
我有以下设置:
def returnList(arg=["abc"]):
return arg
list1 = returnList()
list2 = returnList()
list2.append("def")
print("list1: " + " ".join(list1) + "\n" + "list2: " + " ".join(list2) + "\n")
print(id(list1))
print(id(list2))
Run Code Online (Sandbox Code Playgroud)
输出:
list1: abc def
list2: abc def
140218365917160
140218365917160
Run Code Online (Sandbox Code Playgroud)
我可以看到arg = ["abc"]返回相同默认列表的副本,而不是每次都创建一个新列表.
我试过了
def returnList(arg=["abc"][:]):
Run Code Online (Sandbox Code Playgroud)
和
def returnList(arg=list(["abc"])):
Run Code Online (Sandbox Code Playgroud)
是否有可能获得一个新列表,或者每次我想要某种默认值时都必须在方法中复制列表?
我想检查我的短信应用是否设置为android中的默认应用.我正在关注本教程:
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html
我可以通过以下代码将我的短信应用设置为默认短信应用:
Intent intent = new Intent(context, Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但我想检查我的短信应用是否设置为默认应用.我怎样才能做到这一点?
我的公司使用Delphi已有数十年了,我们的核心程序是一个很旧的版本。它有大约130万行代码。
升级到Delphi 10 Rio后,出现了一个主要问题。我们的局部函数变量曾经使用默认值进行初始化(整数将为0,布尔值将为false),似乎不再是。现在我所有的变量在创建时都会获得一个随机值,因此整数的值类似于408796。
我想这不是新开发的问题,但是我相信您可以在我们的大型代码库中看到此问题。我们从来没有手动将默认值分配给这些变量,因为它可以正常工作。但是,对象变量始终存在此问题。所有属性均获得随机值,因此我们在进行处理时对此进行了改进。但是现在我们的程序完全中断了,因为所有计数器等都是从高值开始而不是从0开始。并且要遍历整个项目来解决这个问题,将需要几个月的时间。
也许有编译器选项可以更改此设置?倒退的是,他们会故意更改此设置,因为这样做很愚蠢。为什么要删除所有开发人员期望的功能?实际上,我原本希望这样做,否则对象变量将不再需要手动的默认值,并且可能实现了垃圾回收器。但是看来德尔福已经严重退步了吗?
如果有解决此问题的方法,请告诉我。