我想简短一点.我建有两间HouseA,说BedRoom和StudyRoom,从所谓的基类派生两者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),这与上面完全相同,但只有一个改变.我不想要两个单独的房间(即BedRoom和StudyRoom),而是一个房间(MasterRoom),这两个房间都有这些设施.为了代码可重用性,我可以想到以下设计选项:
Option-1:
HouseB ISA House
HouseB HAS MasterRoom
MasterRoom ISA Room
Run Code Online (Sandbox Code Playgroud)
在这里,我失去了再利用的属性的能力BedRoom和StudyRoom我的创造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) 当我在支持软件浮动仿真(硬件浮点禁用)的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"函数,一个用于提取单个位,另一个用于从字符中提取一系列位.我花了一段时间想出了这些方法.
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周期而言)以及是否有任何优化范围可以实现它.我显然不合适,我很想知道你会怎么做?
我目前正在学习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) 我已经成为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代码导航?如果不是,这不是一个主要的缺点吗?有人可以帮忙吗?
我是一个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插入阵列的方式吗?
我在运行以下代码时遇到问题,该代码调用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) 创建函数名包含为字符串的类的新成员函数的最佳方法是什么?此外,这个新函数仅仅是另一个对象(辅助类)的传递,它具有相同的函数名但具有可变参数.我使用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) 帮助我更好地编码这个场景.假设我有一个名为"car"的基类,以及两个名为"Ferrari"和"Chevrolet"的派生类.现在我有一个名为"ParkingLot"的新类,它应该知道它正在操作的汽车,自定义批量和其他属性.
现在回到问题所在.我正在开发的当前代码库非常成熟,它完全用Perl OOPS编写."ParkingLot"构造函数将始终与car对象(在此之前实例化)作为参数传递.代码(Parking Lot)使用这个参数,在对象指针上做一个ref来查找该类是否是"法拉利"/"雪佛兰",并根据汽车类型进行一些非常具体的操作.这个例子,我想说的是一个"冰山一角",这些代码在整个代码中遍布各处,使其更难以维护.
Tommorow,如果我想添加一辆新车,我的停车场应该支持,那么通过代码检查所有参考并手动进行更改将成为一场噩梦.您将如何重做代码以使其更优雅和可维护?
perl ×5
oop ×3
c ×2
c++ ×1
composition ×1
editor ×1
emacs ×1
ieee-754 ×1
inheritance ×1
linux ×1
optimization ×1
posix ×1
powerpc ×1
python ×1
python-2.7 ×1
recursion ×1
refactoring ×1
system-calls ×1
vim ×1