模仿Masonary写一个计算器

1.CaculatorMaker
@interface CaculatorMaker : NSObject
@property(nonatomic,assign)int result;
-(CaculatorMaker *(^)(int))add;
-(CaculatorMaker *(^)(int))sub;
-(CaculatorMaker *(^)(int))muilt;
-(CaculatorMaker *(^)(int))divide;
@end
#import "CaculatorMaker.h" @implementation CaculatorMaker - (CaculatorMaker *(^)(int))add
{
return ^(int value)
{
self.result += value;
return self;
}; }
-(CaculatorMaker *(^)(int))sub{
return ^CaculatorMaker *(int value){
_result -= value;
return self;
}; }
-(CaculatorMaker *(^)(int))muilt;
{
return ^CaculatorMaker *(int value){
_result *= value;
return self;
};
}
-(CaculatorMaker *(^)(int))divide;
{
return ^CaculatorMaker *(int value){
_result /= value;
return self;
};
}
@end
NSObject (CaculatorMaker)
#import <Foundation/Foundation.h>
#import "CaculatorMaker.h"
@interface NSObject (CaculatorMaker)
//计算
+ (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker; @end
#import "NSObject+CaculatorMaker.h" @implementation NSObject (CaculatorMaker)
//计算
+ (int)makeCaculators:(void(^)(CaculatorMaker *make))block
{
CaculatorMaker *mgr = [[CaculatorMaker alloc] init];
block(mgr);
return mgr.result;
}
@end
使用:
int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) {
make.add(1).add(2).add(3).divide(2);
}];
NSLog(@"-==========:%d",iResult);
模仿Masonary写一个计算器的更多相关文章
- 用ES6的class模仿Vue写一个双向绑定
原文地址:用ES6的class模仿Vue写一个双向绑定 点击在线尝试一下 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods cla ...
- 用VBA写一个计算器
着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分 开始==================== ...
- 如何用Python写一个计算器软件 附带效果图
该计算器使用Python tkinter模块开发 效果如下图 import tkinter #导入tkinter模块 root = tkinter.Tk() root.minsize(280,500 ...
- 使用JS写一个计算器
先上效果图: 简单的加减乘除功能还是有的,所以我们就考虑怎么来实现这个功能. 根据预期效果,可以确定页面中的布局要用到table tr td. 所以先放上页面布局,table的边框宽度border,c ...
- 1.自己写一个计算器demo
知识点: 1.System.Math.Pow() 实现乘方 2.实现计算器的运算优先级,依次调用的流程 问题: 还未实现“()”功能 解决方案 UI:
- 用JS写一个计算器(兼容手机端)
先看成果:1.PC端2. 首先确立html,有哪些东西我们要知道.布局大概的样子在心里有个数 <!DOCTYPE html> <html> <head> <m ...
- css写一个计算器叭
显示效果如图,emoji可替换为数字.
- 模仿.NET框架ArrayList写一个自己的动态数组类MyArrayList,揭示foreach实现原理
通过.NET反编译工具可以查看到ArrayList内部的代码,发现ArrayList并非由链表实现,而是由一个不断扩容的数组对象组成. 下面模仿ArrayList写一个自己的MyArrayList. ...
- Android 自己写一个打开图片的Activity
根据记忆中eoe的Intent相关视频,模仿,写一个打开图片的Activity 1.在主Activity的button时间中,通过设置action.category.data打开一个图片.这时代码已经 ...
随机推荐
- vs2008 调试时不会命中断点,源代码与原始版本不同,解决办法
当前不会命中断点,源代码与原始版本不同,解决办法 1.应该是自己一行里写的代码太长了 格式化一下 或者 换下行 2. VC直接把整个文件格式化了一次,断点就可以用了 菜单:编辑-〉高级-〉设置选定内容 ...
- 新机器,分区为NTFS, 安装 Windows XP、Windows Server 2003 时蓝屏问题,修改为 FAT32 即可
现象:安装刚刚开始就会蓝屏:Ghost版本的也无法正常开机. 原因:硬盘引起,通常是主板的RAID.或STAT的设置引起????? 最直接的原因是安装所在的分区的文件系统格式不正确,为NTFS 解决: ...
- C/C++ 头文件以及库的搜索路径
关键点: 1. #include <...> 不会搜索当前目录 2. 使用 -I 参数指定的头文件路径仅次于 搜索当前路径. 3. gcc -E -v 可以输出头文件路径搜索过程 C++编 ...
- tiny4412 ubuntudesktop更新源(old)
1.报错:404 Not Found [IP: 91.189.88.151 80] 2. deb http://old-releases.ubuntu.com/ubuntu/ raring main ...
- Strut2------获取界面返回的session,application,parameter
1.Action类下的代码 public class ServletActionDemo extends ActionSupport { @Override public String execute ...
- SGA内存的优化
查看SGA有关的系统参数即介绍 SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ---- ...
- HTML实体大全
HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集. ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 7 比特 ASCII. ISO-8859-1 ...
- 盒子模型 W3C中和IE中盒子的总宽度分别是什么
W3C盒模型 总宽度 = margin-left + border-left + padding-left + width + padding-right + border-right + margi ...
- Java创建数组的三种方法
■ 第一种: int[] arr=new int[6]; arr[0] = 1; arr[1] = 2 arr[2] = 3; arr[3] = 4; arr[4] = 5; arr[5] = 6; ...
- $.post和jquerySubmit返回json数据获取的区别
$.post("/patrol/patrolDataContent!deleteContent.action",{"ids":ids},function(dat ...