小编Nor*_*man的帖子

Vim - zt 将重绘窗口,光标位于顶部。你能用它重画4行吗?

使用“:help z”阅读手册显示了可以重绘窗口的各种命令,例如z.用光标在中心重绘或zb在屏幕底部重绘。

zt很好,但我会发现能够用光标在页面下方 25% 处重画会更舒服(这样我刚刚写的内容仍然可见)。除了宏之外,还有更简单的方法来实现这一点吗?

vim window redraw text-cursor

5
推荐指数
1
解决办法
642
查看次数

对Haskell中数据结构的困惑

我一直在阅读精彩的学习你是一个Haskell,我来到关于类型和类型类的章节.我很困惑你如何模仿等级,就像你在古典语言中那样.例如,我知道如果我想要一个"类"的武器,那么这样的事情是可能的:

data Weapon = 
  Sword  { sharpness :: Int, weight :: Int, name :: String } 
  | Mace { spikeyness :: Int, weight :: Int, name :: String }
  deriving (Eq)
Run Code Online (Sandbox Code Playgroud)

这是一个做事的好方法吗?如果这个方法是正确的,那么我很难看到你将如何为每个构造函数实现不同的行为:例如,如果你想以不同的方式显示武器,这取决于它是剑还是钉锤......

instance Show Weapon where 
  show w = "This is " ++ name w ++ ". It has a weight of " ++ (show $ weight w)
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的,但是如果我试图显示所有字段,这个函数会遇到问题,因为剑不是spikey而且maces不锋利.我如何在Show类中为Maces和Swords创建不同的实例?

haskell

2
推荐指数
1
解决办法
122
查看次数

在函数中,Bitwise C表达式返回不同的结果?

这个表达式是评估2 ^ x的一种方法(我知道这种方法的危险性):

2 << (x-1)
Run Code Online (Sandbox Code Playgroud)

替换x = 0并且表达式给出了所需的结果1.但是当它放在一个函数中时,它总是返回0:

int fast_2_to_the(int x) {
    return 2 << (x-1);
}
Run Code Online (Sandbox Code Playgroud)

这可以在这个程序中观察到:

int main(int argc, char *argv[]) {
    printf("2 << (0-1) = %d\n", 2 << (0-1));
    printf("fast_2_to_the(0) = %d\n", fast_2_to_the(0));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中给出了以下输出:

2 <<(0-1)= 1

fast_2_to_the(0)= 0

为什么会这样?我是C的初学者,最近一直在学习按位运算符,所以任何相关的建议都会受到赞赏.

c bit-manipulation function bit

2
推荐指数
1
解决办法
72
查看次数

标签 统计

bit ×1

bit-manipulation ×1

c ×1

function ×1

haskell ×1

redraw ×1

text-cursor ×1

vim ×1

window ×1