在C中,如果我创建一个变量并打印它的地址,如下所示:
int a;
int main (void) {
printf ("%p", &a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出为:00AA
使用该行的C++中的相同程序:
cout << &a << endl;
Run Code Online (Sandbox Code Playgroud)
输出为:0x8f970aa
这两者有什么区别?
我使用Turbo C编译了这两个程序.
请考虑以下TypeScript代码:
let x = { foo: { bar: "baz" } };
console.log(x.foo!.bar);
Run Code Online (Sandbox Code Playgroud)
这里,推断类型x.foo是{ bar: string },因此不需要使用非null断言运算符!(参见例如https://github.com/Microsoft/TypeScript/issues/7395):编译器已经知道x.foo不能是空的.
tsc(或者可能是像TSLint这样广泛使用的第三方工具)可以警告我这些多余的用途!,和/或这是一个有计划的功能吗?
我确信这在原则上是可行的(似乎只是使用TypeScript编译器API来识别在!类型不是T | null或的变量上使用的地方T | undefined); 我只是想知道是否已经完成了繁重的工作.或者,我想,指向TypeScript编译器API的相关部分的指针也可以工作 - 很难找到它的文档(我想因为它还不稳定).
(我想问的原因是,我担心我会最终不得不处理代码,其中过去我有些白痴洒!到处做出tsc --strictNullChecks停止发放错误,实际上并没有考虑断言变量是否确实将是非如果它在运行时最终为null,那么瞧!我们可以在编译时捕获一个错误,但是由于过于热心而没有!.!在已知的非变量变量上存在s会强烈暗示代码过度使用!,可能是错误的.)
我有这样的大数据:
> Data[1:7,1]
[1] mature=hsa-miR-5087|mir_Family=-|Gene=OR4F5
[2] mature=hsa-miR-26a-1-3p|mir_Family=mir-26|Gene=OR4F9
[3] mature=hsa-miR-448|mir_Family=mir-448|Gene=OR4F5
[4] mature=hsa-miR-659-3p|mir_Family=-|Gene=OR4F5
[5] mature=hsa-miR-5197-3p|mir_Family=-|Gene=OR4F5
[6] mature=hsa-miR-5093|mir_Family=-|Gene=OR4F5
[7] mature=hsa-miR-650|mir_Family=mir-650|Gene=OR4F5
Run Code Online (Sandbox Code Playgroud)
我想要做的是,在每一行中,我想在单词mature =之后选择名称,并在Gene =之后选择单词然后将它们与
paste(a,b, sep="-")
Run Code Online (Sandbox Code Playgroud)
例如,前两行的预期输出如下:
hsa-miR-5087-OR4F5
hsa-miR-26a-1-3p-OR4F9
Run Code Online (Sandbox Code Playgroud)
所以,最终的实现是这样的:
for(i in 1:nrow(Data)){
Data[i,3] <- sub("mature=([^|]*).*Gene=(.*)", "\\1-\\2", Data[i,1])
Name <- strsplit(as.vector(Data[i,2]),"\\|")[[1]][2]
Data[i,4] <- as.numeric(sub("pvalue=","",Name))
print(i)
}
Run Code Online (Sandbox Code Playgroud)
哪个效果很好,但速度很慢.数据的大小非常大,它有200,000,000 行.这个实现非常缓慢.我怎样才能加快速度?
为了更好地了解函数的使用情况等,如果不访问全局范围,变量查找可能会更快吗?
假设我有:
a = 5;
b = 5;
Run Code Online (Sandbox Code Playgroud)
在全球范围内.是否可以将下面的函数包装起来
function go() {
console.log(a);
}
Run Code Online (Sandbox Code Playgroud)
将无法访问"a"和全局命名空间并返回
Uncaught ReferenceError: a is not defined
Run Code Online (Sandbox Code Playgroud) 我一直试图在Visual Studio中配置打字稿几个月.
我无法找到关于如何在Visual Studio Enterprise 2015中安装或配置Typescript的明确,可靠和完整的规范,这样我就不会陷入让我的x.ts文件弹出一个"杂项"虚拟项目的陷阱.包含lib.d.ts和tsconfig.json的虚拟项目.
这种情况导致智能感知的丧失,需要返回通用的三斜线参考,以及任何商业开发或其他生产链接环境中的基本不可承认的代码.简而言之,它使打字稿成为专业开发人员的非首发.
关于这个主题的谷歌搜索状态在2016年比2014年和2015年有所改善,但最明确的信息仍然在微软的Typescript Github问题列表中,但这些答案太具体了,不能毫不含糊地作为一般指南.其他最佳定义是Scott Logic的讨论和Typescript网站的ASP.NET 4项目教程.
我已将TypescriptVersion变量设置为VS2015的MS SDKs Typescript文件夹中的正确版本.在我的情况下是15.0(尽管Typecript的MSBuild版本是18.0).所以我不再收到有关这个令人恼火的错误.
我有一个正确的tsconfig.json文件匹配Typescript网站的ASP.NET 4项目中描述的文件.
我有一个VS2015生成的lib.d.ts文件,我的虚拟项目名称包含lib.d.ts和tsconfig.json文件名为myproject(tsconfig.json).所有这一切都是预期的.
但是,只要我将一个空白的"base.ts"文件添加到我的Scripts/common文件夹中,我就会得到另一个名为"Miscellaneous"的Typescript虚拟项目,其中包含一个lib.es6.d.ts文件和我的新base.ts.
这意味着VS2015将我的新空.ts文件识别为"松散文件",与打字稿编译上下文无关.上面提到的Scott Logic的帖子在这个主题上有很多深度,但是为了更复杂的目的.
我需要知道是什么导致产生这种不可行的结果,如何防止它,以及如何在ASP.NET 4项目中可靠地配置打字稿,包括新项目和现有项目,以便这种不可行的情况永远不会发生或者可以很快可靠地纠正.
如果您有任何关于此的信息,或者与可能提供部分解释的内容相交的任何经验,我欢迎您的回复.
假设我想在org-mode中转义字符,例如,_以便org-mode呈现以下内容:
* _TARGET_
Run Code Online (Sandbox Code Playgroud)
在我的设置中(我认为是默认设置)org-mode强调单词而不是渲染 _TARGET_
更一般地说,在哪里可以找到有关如何在Emacs org-mode中转义字符的信息?
我使用了以下导入:
from __future__ import *
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误:
SyntaxError: future feature * is not defined (<pyshell#0>, line 1)
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?
{-# LANGUAGE GADTs #-}
data Foo x y where
Composition :: Foo b c -> Foo a b -> Foo a c
FMap :: Functor f => (a->b) -> Foo (f a) (f b)
asFunction :: Foo a b -> a->b
asFunction (FMap m) = fmap m
-- asFunction (Composition (FMap m) (FMap n)) = fmap m . fmap n
asFunction (Composition m n) = asFunction m . asFunction n
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作......直到你取消注释第二个子句asFunction!这实际上只是一个特殊情况的内联版本,其他两个模式已经匹配,所以我希望它没问题.但是(ghc-7.6.2或者也是ghc-7.4.1)
Could not deduce …Run Code Online (Sandbox Code Playgroud) 以下是我的情况:我已经编写了许多Chrome用户脚本供我个人使用.以前,我只有一台机器上有一个Chrome实例,所以我非常乐意将任何持久数据转储到localStorage.
但是,我现在有多台机器,并希望在所有机器上的Chrome上使用我的用户脚本,我的持久数据随之而来.如果有点繁琐(将其粘贴在Bitbucket仓库中,然后拉动并手动安装),同步用户脚本代码本身很简单,但我不知道如何跨机器同步我的localStorage数据.
我考虑过将我的用户脚本转换为正确的Chrome扩展程序并使用chrome.storage API(如果您的Chrome帐户已连接到我的Chrome实例,那么使用chrome.storage.sync存储的数据显然可以同步).但是,这是我的用例的问题:
那么:有没有办法让我能够直接在机器之间同步localStorage,或者2.)使用chrome.storage.sync API而不使用公开发布的Chrome扩展程序?
javascript google-chrome local-storage google-chrome-extension
请考虑以下代码,该代码使用v2.8中引入的 TypeScript语言功能(条件类型):
type P<TObject, TPropertySuperType> = {
[K in keyof TObject]: TObject[K] extends TPropertySuperType ? K : never;
}[keyof TObject];
function g<
T,
K extends keyof Pick<T, P<T, string>>
>(obj: T, prop: K): void { }
class C {
public alpha: string;
public beta: number;
public f(): void {
g(this, "alpha"); // <-- does not compile!
g(this, "beta");
g<C, "alpha">(this, "alpha");
g<C, "beta">(this, "beta");
g(new C(), "alpha");
g(new C(), "beta");
this.g2("alpha");
this.g2("beta");
this.g2<"alpha">("alpha");
this.g2<"beta">("beta");
}
public g2<
K extends …Run Code Online (Sandbox Code Playgroud) typescript ×3
javascript ×2
c ×1
c++ ×1
emacs ×1
gadt ×1
haskell ×1
org-mode ×1
python ×1
r ×1
regex ×1
typechecking ×1
unification ×1