小编raj*_*han的帖子

我应该使用继承还是组合?

我想简短一点.我建有两间HouseA,说BedRoomStudyRoom,从所谓的基类派生两者Room. BedRoom并且StudyRoom有一个同一个父母叫House.此外,房屋内的任何房间只能通过父母进入任何其他房间.如果BedRoom必须访问任何属性StudyRoom,它必须只通过House(即父),反之亦然.

HouseA ISA House
HouseA HAS BedRoom and StudyRoom.
BedRoom ISA Room
StudyRoom ISA Room
Run Code Online (Sandbox Code Playgroud)

现在的问题:让我们说,我建造另一个家(比方说HouseB),这与上面完全相同,但只有一个改变.我不想要两个单独的房间(即BedRoomStudyRoom),而是一个房间(MasterRoom),这两个房间都有这些设施.为了代码可重用性,我可以想到以下设计选项:

Option-1:
HouseB ISA House
HouseB HAS MasterRoom
MasterRoom ISA Room
Run Code Online (Sandbox Code Playgroud)

在这里,我失去了再利用的属性的能力BedRoomStudyRoom我的创造HouseA.请注意,大多数的属性BedRoom,并StudyRoom需要重新实现MasterRoom无论如何,从而导致代码重复.

Option-2:
HouseB ISA House
HouseB HAS MasterRoom
MasterRoom ISA Room
MasterRoom HAS LogicalBedroom
MasterRoom HAS …
Run Code Online (Sandbox Code Playgroud)

oop perl inheritance composition

15
推荐指数
1
解决办法
1498
查看次数

浮点行为不正确

当我在支持软件浮动仿真(硬件浮点禁用)的32位powerpc内核中运行以下C++程序时,我得到了错误的条件评估.有人可以告诉我这里有什么潜在的问题吗?

#include <stdio.h>

int main() {
   int newmax = 1;
   if ((newmax + 0.0) > 256) {
       printf("\nShouldn't be here\n");
   } else {
       printf("\nShould be here\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

编译:

powerpc-linux-g++ -msoft-float -c floating.cxx
powerpc-linux-g++  -o floating floating.o
Run Code Online (Sandbox Code Playgroud)

目标系统中的输出:

[linux:/]$ ./floating
Shouldn't be here
Run Code Online (Sandbox Code Playgroud)

c++ floating-point powerpc ieee-754 embedded-linux

14
推荐指数
1
解决办法
1080
查看次数

如何以更优化的方式提取一点?

我今天接受了采访,他们要求我写两个"C"函数,一个用于提取单个位,另一个用于从字符中提取一系列位.我花了一段时间想出了这些方法.

int extractBit(char byte, int pos) {
    assert( (pos >= 0) && (pos < 8) );
    return ( ( byte & (1<<pos) ) >> pos);
}
char extractBitRange(char byte, int startingPos, int offset) {
   assert( ( (startingPos + offset) >= 0) && ( (startingPos + offset) < 8) );
   return ( byte >> startingPos ) & ~(0xff << (offset + 1));
}
Run Code Online (Sandbox Code Playgroud)

但是面试官一直在问我是否可以进一步加快代码(就cpu周期而言)以及是否有任何优化范围可以实现它.我显然不合适,我很想知道你会怎么做?

c optimization

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

在Perl中递归打印数据结构

我目前正在学习Perl.我有Perl哈希包含对哈希和数组的引用.散列和数组可以依次包含对其他散列/数组的引用.

我写了一个子程序来递归地解析哈希并用适当的缩进打印它们.虽然例程按预期工作,但我的导师并不相信下面代码的可读性和优雅性.

我非常感谢在这里获得Perl专家的观点,以便对下面的代码进行可能的优化.

这是我的完整代码片段..

# Array of Arrays
$ref_to_AoA = [
     [ "fred", "barney" ],
     [ "george", "jane", "elroy" ],
     [ "homer", "marge", "bart" ],
];


#Array of Hashes
$ref_to_AoH = [ 
{
   husband  => "barney",
   wife     => "betty",
   son      => "bamm bamm",
},
{
   husband => "george",
   wife    => "jane",
   son     => "elroy",
},
];

# Hash of Hashes
$ref_to_HoH = { 
    flintstones => {
        husband   => "fred",
        pal       => "barney",
    },
    jetsons => {
       husband   => "george",
       wife …
Run Code Online (Sandbox Code Playgroud)

oop recursion perl

5
推荐指数
3
解决办法
6292
查看次数

如何在emacs中使用cscope导航perl代码?

我已经成为VIM用户4年了,但一直在努力学习emacs.我的项目完全用perl编写,我试图让es在emacs for perl中工作.

我从VIM导航perl没有任何问题."从vim命令模式中添加cscope.out"对我来说很有帮助.但是在emacs中,使用相同的cscope数据库(包含C++和perl符号),emacs完全识别我的C符号(Mx Mx cscope-find-global-definition).但对于perl符号,我收到以下错误.

错误:查找全局定义:somePerlFunction搜索完成.
搜索时间= 0.92秒.没有找到匹配项.

emacs是否支持perl代码导航?如果不是,这不是一个主要的缺点吗?有人可以帮忙吗?

vim emacs perl editor

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

如何grep perl Hash Keys进入一个数组?

我是一个perl新手,需要帮助理解下面的代码.

我有一个像这样定义的perl Hash

1   my %myFavourite = ("Apple"=>"Apple");
2   my @fruits = ("Apple", "Orange", "Grape");
3   @myFavourite{@fruits}; # This returns Apple. But how?
Run Code Online (Sandbox Code Playgroud)

如果perl大师可以解释上面代码的第3行中发生了什么,那将是很好的.myFavourite声明有一个哈希,但用作数组?该语句只需获取哈希的密钥,将其压入数组并返回与搜索的密钥对应的哈希值.这是我们将Hash Keys插入阵列的方式吗?

perl

3
推荐指数
2
解决办法
4772
查看次数

getutent和Linux计时器问题

我在运行以下代码时遇到问题,该代码调用getutent()来计算当前登录到系统的用户总数.计时器将被调用每1秒,将设置名为"isSigAlrmOccured",以真实,exit.The主要功能检查定时器信号是否通过检查该boolen交付和监控的loggedIn用户数量的布尔值.不幸的是,定时器信号仅正确地传送到主程序两次,之后我没有得到任何进一步的信号.在前两个信号之后,暂停函数调用不会被中断.

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <utmp.h>
#include <errno.h>

static int isSigAlrmOccured;

void alarm_handler (int signo)
{
  static int i=1;
  printf("\n Signal Occurred %d times\n",i++);
  isSigAlrmOccured = 1;

}

int main (int argc, char *argv[]) {
   struct itimerval delay;
   struct utmp *utmpstruct;
   int numuser;


   int ret;
   signal (SIGALRM, alarm_handler);
   delay.it_value.tv_sec = 1;
   delay.it_value.tv_usec = 0;
   delay.it_interval.tv_sec = 1;
   delay.it_interval.tv_usec = 0;
   ret = setitimer (ITIMER_REAL, &delay, NULL);
   if (ret) {
     perror ("setitimer");
     return 0;
   }
   for (;;) { …
Run Code Online (Sandbox Code Playgroud)

c linux posix system-calls

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

Python:将函数动态添加到类,其名称包含在字符串中

创建函数名包含为字符串的类的新成员函数的最佳方法是什么?此外,这个新函数仅仅是另一个对象(辅助类)的传递,它具有相同的函数名但具有可变参数.我使用lambda来实现这一点,但我不知道如何处理这个场景,我的传递包装器将不止一个语句(这是我的要求)

# This is a helper class
class Compensation:
   def bonus(self):
       return 10000
   def salary(self):
       # Do something
   def stack(self):
       # Do something

# This is a employer class
class employee:
   def __init__(self):
       self.compensation = Compensation()

# This is a wrapper that creates the function
def passThru(funcName):
    fn = "employee."+funcName+"=" + "lambda self, *arg: self.compensation." + funcName +"(*arg)"
    exec(fn)

fnNames = ["bonus", "salary", "stocks"]
for items in fnNames: passThru(items)

emp = employee()
emp.bonus() # returns 1000
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何在没有ref的情况下编写优雅的perl代码

帮助我更好地编码这个场景.假设我有一个名为"car"的基类,以及两个名为"Ferrari"和"Chevrolet"的派生类.现在我有一个名为"ParkingLot"的新类,它应该知道它正在操作的汽车,自定义批量和其他属性.

现在回到问题所在.我正在开发的当前代码库非常成熟,它完全用Perl OOPS编写."ParkingLot"构造函数将始终与car对象(在此之前实例化)作为参数传递.代码(Parking Lot)使用这个参数,在对象指针上做一个ref来查找该类是否是"法拉利"/"雪佛兰",并根据汽车类型进行一些非常具体的操作.这个例子,我想说的是一个"冰山一角",这些代码在整个代码中遍布各处,使其更难以维护.

Tommorow,如果我想添加一辆新车,我的停车场应该支持,那么通过代码检查所有参考并手动进行更改将成为一场噩梦.您将如何重做代码以使其更优雅和可维护?

oop perl refactoring

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