我很难找到答案.使用普通的Node.JS,您可以运行任何js文件node path/to/file.js,使用CoffeeScript coffee hello.coffee和ES6 babel-node hello.js.如何使用Typescript做同样的事情?
我的项目有一个tsconfig.jsonWebpack/ts-loader用来为浏览器构建一个漂亮的小包.我需要在此之前从控制台运行构建步骤,但是,这将使用.ts项目中使用的一些文件来生成模式,但是我似乎无法在不编译的情况下运行单个Typescript文件整个项目.
任何人都可以告诉我为什么这不会编译?
package main
type myint int
func set(a **myint) {
i := myint(5)
*a = &i
}
func main() {
var k *int
set( (**myint)(&k) ) // cannot convert &k (type **int) to type **myint
print( *k )
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的理由是这样的.Golang中的所有类型都不同,但只要底层类型相同,它就允许使用类似C的强制转换语法从一种类型转换为另一种类型.在我的例子中,将'int'转换为'myint'不是问题.'*int'到'*myint'也不是.当你有指向指针问题的指针出现时.我现在第二天一直坚持这个.任何帮助表示赞赏.
假设我有一个函数将一个数字参数与一个常量进行比较并返回一个布尔值:
fn compare(n: f64) -> bool {
n > 42 as f64
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我似乎无法使其通用:
fn compare<T: Ord>(n: T) -> bool {
n > 42 as T // error: non-scalar cast: `<VI0>` as `T`
}
fn compare<T: Ord>(n: T) -> bool {
n > 42 // mismatched types: expected `T` but found `<VI0>` (expected type parameter but found integral variable)
}
fn compare<T: Num>(n: T) -> bool {
n > 42 // error: binary operation > cannot be applied to type …Run Code Online (Sandbox Code Playgroud) 这是我在控制台中得到的:
ghci> sum $ takeWhile (<10000000) [1..]
49999995000000
(11.96 secs, 2174569400 bytes)
Run Code Online (Sandbox Code Playgroud)
那超过2GB!我想sum可以丢弃它已经总结的任何东西.你会怎么写这个?
只是想知道是否有一个语法快捷方式,用于获取两个proc并加入它们,以便将一个的输出传递给另一个,相当于:
a = ->(x) { x + 1 }
b = ->(x) { x * 10 }
c = ->(x) { b.( a.( x ) ) }
Run Code Online (Sandbox Code Playgroud)
有喜欢的东西时,这会派上用场method(:abc).to_proc,并:xyz.to_proc
通常在Ruby(特别是Rails)中,您必须检查是否存在某些内容,然后对其执行操作,例如:
if @objects.any?
puts "We have these objects:"
@objects.each { |o| puts "hello: #{o}"
end
Run Code Online (Sandbox Code Playgroud)
这是最短的,一切都很好,但如果你有@objects.some_association.something.hit_database.process而不是@objects?我必须在if表达式中第二次重复它,如果我不知道实现细节并且方法调用很昂贵怎么办?
显而易见的选择是创建一个变量,然后测试它然后处理它,但是你必须提出一个变量名(ugh),它也会在内存中挂起,直到作用域结束.
为什么不是这样的:
@objects.some_association.something.hit_database.process.with :any? do |objects|
puts "We have these objects:"
objects.each { ... }
end
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
我已经在这一段时间了,这真的让我很困惑.这是一个非常精简的代码片段,可以重现这个问题:
uint8_t dataz[] = { 1, 2, 3, 4, 5, 6 };
struct mystruct {
uint8_t dummy1[1];
uint16_t very_important_data;
uint8_t dummy2[3];
} *mystruct = (void *) dataz;
printf("%x\n", mystruct -> very_important_data);
Run Code Online (Sandbox Code Playgroud)
你期望什么应该是输出?我会说x302,但不是.它给了我x403.与使用此结构相同:
struct mystruct {
uint8_t dummy1[2];
uint16_t very_important_data;
uint8_t dummy2[2];
} *mystruct = (void *) dataz;
Run Code Online (Sandbox Code Playgroud)
你会怎么解释?