我花了太多时间在这个看似简单的问题上.我有一条路线,page2定义如下:
// app.module.ts
import { Page2Component } from './page2/page2.component';
@NgModule({
declarations: [
AppComponent,
Page2Component
],
imports: [
BrowserModule, RouterModule.forRoot([
{ path: 'page2', component: Page2Component },
])
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
我已经检查过<base href="/">了index.html.但是,当我手动输入时http://localhost:4200/page2,我总是被重定向回主页(定义中app.component).
我重复了快速入门指南的时间和次数,但无法理解为什么.我的路线定义出了什么问题?
编辑:我使用全新的应用程序(via ng new test-app)和新page2组件(ng generate component page2)进行了测试.仍然是同样的问题.我现在更加困惑.
假设我有一个非常简单的类,带有计算属性:
class Person {
firstName: string;
lastName: string;
get fuillName(): string {
return this.firstName + ' ' + this.lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个类型的对象Person:
let p: Person = {
firstName: 'John',
lastName: 'Smith'
};
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
输入'{firstName:string; lastName:string; }'不能赋值为'Person'.类型'{firstName:string;中缺少属性'fuillName'; lastName:string; }".
咦?fullName是一个只读属性.所以我按照这个问题并实现了一个部分初始化器:
constructor(init?: Partial<Person>) {
Object.assign(this, init);
}
Run Code Online (Sandbox Code Playgroud)
同样的错误.我知道我可以这样做:
let p = new Person();
p.firstName = 'John';
p.lastName = 'Smith';
console.debug(p.fullName);
Run Code Online (Sandbox Code Playgroud)
但是有没有使用JSON语法初始化类的简写?
假设我在 SQL Server 中有下表:
CREATE TABLE Users
(
UserID int IDENTITY(1,1) PRIMARY KEY
, UserName varchar(50)
, InsertDate datetime2 DEFAULT GETDATE()
)
Run Code Online (Sandbox Code Playgroud)
在Python中,我想从DataFrame插入到这个表中并取回UserID我刚刚插入的行
import numpy as np
import pandas as pd
import sqlalchemy as sa
engine = sa.create_engine(...)
df = pd.DataFrame({'UserName': ['Alice', 'Bob']})
df.to_sql('Users', engine, if_exists='append', index=False)
Run Code Online (Sandbox Code Playgroud)
数据正在进入数据库。但是我怎样才能取回UserID我刚刚插入的行呢?我考虑编写一个包装函数,首先插入到临时表中,然后使用 T-SQL 来操作数据并返回我想要的内容。但有没有更简单的方法呢?
注意:无论如何我都无法修改表的架构。我只能在数据库中创建临时表。
我知道如何以URL格式编码字符串(笑脸是故意的):
let str = "www.mywebsite.com/.html"
let escapedStr = str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())!
print(escapedStr)
// Output:
// www.mywebsite.com/%F0%9F%98%80.html
Run Code Online (Sandbox Code Playgroud)
但如果我依附于http://未转义的字符串,Swift也会逃脱冒号:
let str = "http://www.mywebsite.com/.html"
let escapedStr = str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())!
print(escapedStr)
// Output
// http%3A//www.mywebsite.com/%F0%9F%98%80.html
Run Code Online (Sandbox Code Playgroud)
如此简单的http://手动删除和添加,我怎样才能正确地删除这些字符串?我必须处理其他前缀https://,ftp://或者ssh://
我有以下功能将PDF转换为一系列图像(每页一个图像):
import Quartz
func convertPDF(at sourceURL: URL, to destinationURL: URL, fileType: NSBitmapImageFileType, dpi: CGFloat = 200) throws -> [URL] {
let fileExtension: String
switch fileType {
case .BMP: fileExtension = "bmp"
case .GIF: fileExtension = "gif"
case .JPEG, .JPEG2000: fileExtension = "jpeg"
case .PNG: fileExtension = "png"
case .TIFF: fileExtension = "tiff"
}
let data = try Data(contentsOf: sourceURL)
let pdfImageRep = NSPDFImageRep(data: data)!
var imageURLs = [URL]()
for i in 0..<pdfImageRep.pageCount {
pdfImageRep.currentPage = i
let width = pdfImageRep.size.width …Run Code Online (Sandbox Code Playgroud) 假设我有一个简单的 C 程序,可以将 2 个数字相加:
#include <stdio.h>
int main(void) {
int a, b;
printf("Enter a: "); scanf("%d", &a);
printf("Enter b: "); scanf("%d", &b);
printf("a + b = %d\n", a + b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我没有在每次执行时都输入终端,而是将a和的值输入b到一个文件中:
// input.txt
10
20
Run Code Online (Sandbox Code Playgroud)
然后我重定向stdin到这个文件:
./a.out < input.txt
Run Code Online (Sandbox Code Playgroud)
该程序可以运行,但其输出有点混乱:
Enter a: Enter b: a + b = 30
Run Code Online (Sandbox Code Playgroud)
有没有办法将 stdin 重定向到 stdout 以便输出看起来好像用户手动输入了值,即:
Enter a: 10
Enter b: 20
a + b = 30
Run Code Online (Sandbox Code Playgroud)