This doesn't seem to work if your PricingEngine object is attached to some 
other object.  Like, for example if you have:

type Bond
 pricingEngine::PricingEngine
end


myPE = PricingEngine(4.5, 5.5, TermStructureA())


myBond = Bond(myPE)


myPE = update_ts(myPE, TermStructureB())


At that point, myBond's pricing engine still points to the older myPE with 
TermStructureA.

On Monday, February 1, 2016 at 1:58:54 PM UTC-5, Christopher Alexander 
wrote:
>
> So something like:
>
> function update_ts(pe::PricingEngine, newTS::TermStructure)
>  newPE = PricingEngine(pe.varA, pe.varB, newTS)
>  return newPE
> end
>
>
> myPE = PricingEngine(4.5, 5.5, TermStructureA())
>
>
> myPE = update_ts(myPE, TermStructureB())
>
> You probably wouldn't be able to update the "myPE" object in place right 
> (i.e. updating it in the actual update_ts method and then returning itself)?
>
>
> On Monday, February 1, 2016 at 1:50:41 PM UTC-5, Tom Breloff wrote:
>>
>> You could just construct a new object with the new TermStructure, instead 
>> of overwriting the old one.
>>
>> On Mon, Feb 1, 2016 at 1:27 PM, Christopher Alexander <[email protected]> 
>> wrote:
>>
>>> Hello all, I have a question about the usage of parametric types.  I 
>>> know these bring about a performance boost (at least that was my 
>>> understanding), but I have a situation where I have a parametric type 
>>> defined as such:
>>>
>>> type PricingEngine{T <: TermStructure}
>>>  varA::Float64
>>>  varB::Float64
>>>  ts::T
>>> end
>>>
>>>
>>> But then I need to actually swap the existing term structure with 
>>> another subtype of TermStructure further down the road. Using parametric 
>>> types, it complains because I guess it's locked in to using whatever 
>>> TermStructure sub type is initially there when I instantiate the 
>>> PricingEngine type.  Is there anyway to do such an update while still using 
>>> a type parameter, or am I stuck just with a definition that uses the 
>>> broader abstract type?
>>>
>>> Thanks!
>>>
>>> Chris
>>>
>>
>>

Reply via email to